Home » Archive by category "Intel" (Page 2)
Intel, Latest Technology

The symbiotic relationship of social media and apps

Symbiosis is a term used in biology to describe a relationship that is (usually) mutually beneficial to one another. The two parties in the relationship depend on each other’s unique gifts in order to survive and flourish; this is seen in the partnership between clownfish and sea anemone:

“In a symbiotic mutualistic relationship, the clownfish feeds on small invertebrates that otherwise have potential to harm the sea anemone, and the fecal matter from the clownfish provides nutrients to the sea anemone. The clownfish is additionally protected from predators by the anemone's stinging cells, to which the clownfish is immune.” – Symbiosis, Wikipedia

The unique relationship between social media and apps is much like the biological phenomenon of symbiosis, in that while one can survive without the other, it becomes much more beneficial to both if they are included. A recent study from Pew Internet Research Center released figures on the percentage of adults using Facebook, LinkedIn, Pinterest, Twitter, and Instagram, and the results demonstrated beyond any shadow of a doubt that apps and social media go hand in hand. Here are some of the key findings from the report:

  • Some 73% of online adults now use a social networking site of some kind.
  • Facebook is the dominant social networking platform in the number of users, but a striking number of users are now diversifying onto other platforms.
  • Some 42% of online adults now use multiple social networking sites.
  • Some 71% of online adults are now Facebook users, a slight increase from the 67% of online adults who used Facebook as of late 2012.
  • Pinterest holds particular appeal to female users (women are four times as likely as men to be Pinterest users), and LinkedIn is especially popular among college graduates and internet users in higher income households.
  • Twitter and Instagram have particular appeal to younger adults, urban dwellers, and non-whites.
  • 63% of Facebook users visit the site at least once a day, with 40% doing so multiple times throughout the day.
  • Instagram and Twitter have a significantly smaller number of users than Facebook does, but users of these sites also tend to visit them frequently. Some 57% of Instagram users visit the site at least once a day (with 35% doing so multiple times per day), and 46% of Twitter users are daily visitors (with 29% visiting multiple times per day).
  • 42% of online adults use multiple social networking platforms. For those who use only one social networking site, Facebook is typically—though not always—the platform of choice.

More people are visiting social media sites on their mobile devices via apps than at any time before in history, and this number only is forecasted to increase as the world becomes more interconnected, aka as “the Internet of Things”.  Several social networking properties gained their viral following in 2013 purely from the infiltration of mobile app use; this includes Instagram, Vine, and Snapchat, three social platforms that are especially popular with people ages 13 to 25:

“Instagram in 2013 comfortably cruised from 80 million to 150 million monthly active users, half of whom check their feeds daily. The app has become a mainstay of the social routine because it continues to be interesting….. The ephemeral messaging app Snapchat has captivated your teenage relatives, and for good reason: They just tap out a message or snap a photo with a funny caption, and set a timer. When the seconds tick down, the message disappears. It's fun, simple, and, most important, private. Snapchat began growing its fanbase last year, but in 2013 the service was inescapable.” – “From Twitter to Tinder: Social media hits and misses of 2013”, ComputerWorld.com

Increased global connectivity grew greatly in 2013, thereby increasing the use of engagement via apps. A Nielsen study on mobile usage tracked the growth of smartphone penetration, showing growth in overall smartphone penetration in the US from 56% at the beginning of 2013 to 65% of U.S. mobile subscribers by October, with the majority of users using Android and iOS platforms to increase activity in apps, specifically, social networking apps. Facebook won the day with over 103 million unique users every month, and Instagram was in the top ten lists of apps used for the year.

It’s clear that apps that are either purely focused on social media or apps that offer some sort of social media activity are the clear winners when it comes to app engagement with users. This goes for games and social media as well; another prime example of a symbiotic relationship, as seen in a recent article from Gigaom:

“More than 250 million people are playing Facebook games every month, and roughly 100 developers generated more than $1 million in revenue in 2012. But one statistic that Facebook mentioned is particularly loaded: 55 percent of the top 400 iOS apps are integrated with Facebook. Far and away, the most popular game on Facebook is King’s Candy Crush Saga, which, according to Facebook, has roughly 100 million monthly players. While Candy Crush Saga is a behemoth on Facebook, its dwarfed compared to King’s internal data — a representative told the New York Times this summer that the game receives 600 million active game sessions from mobile devices each day. Given its ubiquitousness on iPhone and Android, it’s likely that mobile gaming is influencing social gaming, not the other way around.” – “Zynga may be coming back but social gaming is not what it was”, gigaom.com

We’re just starting the early stages of what the relationship between social media and gaming could really look like; regardless, developers who integrate these now expected features into the apps that they release are more likely than not to see greater engagement from their user base.  This is especially true of Facebook, as seen in an article from Appcelerator:

  • More app developers integrate with Facebook than any other major social media provider (66% – Twitter is a distant second at 52.7%);
  • This lead can’t be chalked up solely to Facebook’s authentication service. When asked how they were managing user authentication inside their apps, most developers reported relying on traditional web protocols (38.7%) or specific methods such as SAML or OAuth (21%). Social media services such as Facebook were third at 19.1%.
  • Facebook’s switch from HTML5 to native apps and their investment in mobile-friendly APIs such as Open Graph were ranked one and two respectively by developers when asked to judge the company’s smartest mobile bets.

The study from Pew Research gives us an interesting insight into how the genders use apps, which coincide nicely with data from analytics firm Apsalar, which offers insights on how women use apps as opposed to men (hint: women tend to be much more social pretty much across the board). On the surface, it would seem obvious that men and women are quite different when it comes to app usage. It is also revealing that different development approaches would best be utilized for different apps, not necessarily targeting towards one gender or the other, but taking different usage patterns into account as part of the overall development strategy.

  • Women install 40% more apps than men, buy 17% more paid apps, and pay 87% more for those apps
  • The top app categories for women are social media, news, productivity, lifestyle and books
  • The top app categories for men are business, games, navigation, travel, health, and fitness
  • Men lead in mobile gaming and in-app spending. They use business-related apps 85% more than women, navigation apps 40% more, games 61% more and health and fitness 10% more.
  • Women use social media apps a whopping 600% more than men, news apps 90% more, productivity apps 89% more, lifestyle apps 64% more, and books 10% more.

The social aspect of app downloads, along with gender engagement patterns, leads us to the logical conclusion that the weighted influence of an individual within their social circles counts for more than that of a brand of a website. Think back to the last time you downloaded an app, visited a link, or looked at a video. Most likely, you did so on the recommendation of a friend – not necessarily directed straight at you, per se, but you saw it on their social networking “stream” and made the conscious decision of taking their word for it that that content was worth engaging with. Social engagement is based on both authority and relevancy; in fact, recommendations from your peers carry more weight on activity users engage with on apps, the Internet, and in real life than anything else.

So, who’s the clownfish and who’s the anemone in the symbiotic example I used earlier to delineate the relationship between social media and app engagement? Either one would fit; but neither one can really exist profitably without the other.

Intel, Latest Technology

IntelXDK , Crosswalk Runtime and WebGL

This article is about developing android apps using Intel XDK and three.js.It will give an overview on how to develop GUI based app for Android architecture using this wonderful tool.I have taken help from the article  while explaining Three.js and the full documentation of Three.js gives lot of information to work with.

Pretty new to Android Platform

For last 15 months i have been developing apps for Windows Desktop and so i am very new to Android platform. So this experience will be new for me as I explore the unknown world(for me) of Android .The things that i cover might not be new but i have given it a try

Why i have chosen Intel XDK

I have little knowledge of HTML and i intend to use an IDE where i can implement my HTML skills. The whole IDE experience was a new one for me because i have not used Intel XDK once. It's a cloud based IDE which requires you to be always connected to the internet when you go through the entire process of creating a package for distribution. Pluses for Intel XDK would be that you don't have to configure Android ADT bundle and it has got an inbuilt emulator to test your app. Here you have the options to choose from different form factors such as Google Nexus 4 and Google Nexus 7,Lenovo K900 etc. Minuses i found would be that the IDE used to freeze at times if you used to work for on it for a long time. At these times  i had to restart the IDE and then start my work again. Overall my experience using Intel XDK was good one because i had little trouble developing my app.

Exploring Three.js 

Three.js!! in fact it came to my liking as i was searching some processing based examples on net. Essentially another Creative Coders delight(http://threejs.org/) it has got lot of options powered by WebGL it is essentially helpful in  creating great looking GUI apps and have fun with. Being Open Sourced with lot of examples to work with. Now one catch as you are developing for Android not all browsers support WebGL in that case what you need to do is use Canvas renderer and you  are on your way.

What is Intel XDK?  
The Intel XDK is cross platform IDE for developing solid HTML 5 in the developing environment and you can update your code being connected to internet. After you build the app you can distribute it to different platforms. Android apps can be created by the same way and in the build option you can create the apk.This IDE has the ability to code once and distribute it to different platforms. In the new updated XDK there is CROSSWALK build option for Android  that is in Beta phase right now it helps in porting your native capabilities html 5 ,JavaScript and CSS 3 apps. During Development phase you can test the app for
different form factors using the emulator. All in all it's a great platform to develop HTML 5 apps and distribute it 

Download Link

Step by step process  of downloading Intel XDK with figures

The next step will detect your OS

Save the File and the exe will be saved. Follow the steps as mentioned below to install and start the exe 

The project lifecycle of Intel XDK and Android Project shown below

When you open up Intel XDK you will be presented with an option to Start a new project. Here you can start a fresh with a blank template or reuse any demo and modify it. The options that are available are

  • i)Start with a Blank Project
  •  ii)Work with a Demo
  • iii)Import an existing app :-here you can port old apps made with the XDK's,PhoneGap apps,AppMobapps,HTML 5 api based apps but cannot port Java apps.
  • iv)Use App Starter It uses App Framework 2.0 .Full details are available here http://app-framework-software.intel.com/
  • v)Start with App Designer App Designer allows you to get going with the project using App Framework,BootStrap API,jQuery Mobile or Top Coat.


As we are targeting Three.js we will use work with a demo that too the Cross Walk Demo and modify the Demo inserting additional codes in the index.html file and adding the required three.js files.There is a great information  explaining and giving an overview into CrossWalk runtime in the Intel Website http://software.intel.com/en-us/html5/articles/crosswalk-application-runtime

 What is Three.js? 
 
Three.js is a library that makes WebGL - 3D in the browser - very easy. While a simple cube in raw WebGL would turn out hundreds of lines of JavaScript and shader code, a Three.js equivalent is only
a fraction of that. Three.js is a lightweight cross-browser JavaScript library/API used to create and
display animated 3D computer graphics on a Web browser.Three.js scripts may be used in conjunction with the HTML5 canvas element, SVG or WebGL

Starting A fresh 
Decoding  one of the examples and creating a new apk from the GITHUB.The Founders of Three.js have done an excellent  job with all credits to them i am using one of the examples to get going. https://github.com/mrdoob/three.js/blob/master/examples/canvas_interactive_voxelpainter.html  
1)Open    Intel XDK     2) Click on Project     3)Click on Start a new Project

Click on Work with a demo

Select CrossWalk and click on next

Click on Create.As the project is created you will get a Congratulation message  
According to your liking change  the index.html page as it will reflect the main changes in the app and  
also add the JavaScript required.

According to your liking change the  index.html page as it will reflect the main changes in the app and also add the  Three.js JavaScript required.

A Close look at the index.html page   
Lets see the flow of the index.html  file within Intel XDK

After the changes in the index.html file and adding the required js files in the threejs folder(You need

to access the files from the Windows directory structure of the project and then add the files manually  
In my case i add the files manually over to the main project folder  
E:\IntelXDK_Projects\eXAMPLE2\threejs)   you need to click on emulate(you can choose from the many emulators available to check the project)

The Magic of Intel XDK,Crosswalk to bring the effect of WebGL

Extending the Crosswalk demo with Intel XDK helps you bring WebGL to Android.As per the discussion in this topic the role of Crosswalk with Intel XDK is specified here

Crosswalk can be thought of as an alternate runtime for Android devices. It is only compatible with Android 4.0 and higher devices, so cannot be applied to older Android 2.x and 3.x devices. It is in a preliminary (alpha) release state right now, I do not when it will be released to beta or final release. When it does become available there will be documentation describing in more detail what Crosswalk offers in comparison to using the builtin webview on Android 4.x devices.

As I had discussion with Bob Duffy i found out that

Crosswalk with the Intel XDK are replacing the default webview that Android doen't support WebGL.Intel XDK is providing you Chromium and WebGL on pre 4.4 devices.

So the key here in building a new project is extending the index.html page which has already Crosswalk runtime associated.The important files in the project are manifest.json.Taking help from this documentation we see the application structure contains manifest.json in the root directory.The main entry point is then referenced from this manifest file

The file format


{

          "name": "WebGL Sample",

          "manifest_version": 1,

          "version": "0.0.0.1",

          "app": {

            "launch":{

              "local_path": "index.html"

            }

          }

        }

The Crosswalk project is in beta phase and is undergoing changes but you can certainly experiment and learn more.As per the discussion of Crosswalk it is

At the heart of the Crosswalk web runtime is the Blink* rendering and layout engine. Blink provides the same HTML5 features and capabilities found in today's modern web ecosystem, such as WebGL* and Web Audio*. Crosswalk enables state-of-the-art HTML5-based applications that make the most of today's leading edge mobile devices

Crosswalk with Intel XDK provides access to WebGL API.


 
The Build process

Here lies the main action where the apk's are created.The Build menu has all the options to distribute the apps in multiple platforms.Here you can edit Asset as well as images that you want to add to the app.For Android there are two options

  •   i)Android :-  you create the normal APK's that you can distribute...  
  • ii)CrossWalk for Android (it's in Beta phase) :-this is a build that creates a CrossWalk Runtime Android APK where you have the options to build it for ARM based devices or X86 architecture.

The Build process with  figures

 You will see that the build is about to be created.You need to click on build app now

The next figure shows the build process

You will get a message that build is successful

The Whole process of changing the app development process happens at the index.html page.Any update here reflects the change and whole flow changes.Make changes to the index.html pages and
include the necessary Three.js files.Tweaking the code from the GITHUB will help you explore.There is also a CROSSWALK build which allows to create the package in x86 or ARM architecture it's in beta phase but you can try this build.

The anatomy of the index.html page(Creating a new Project) 

  Any change made to the index.htmlactually reflects how the app will look like finally.So we need includenecassry Three.js files as well as the whole logic needs to be implementedhere.I dug deep in to the three.js GITHUB repository and check which are the examples that can be worked upon and bring it to Intel XDK and finally make the apk out of it.So what i have done is broken down the index.html page and its modification to give the proper view of the project.In context of learning i have taken help from here .It's very useful in exploring the three.js.The primary contributor to this library is Mr Droob  and theo-armour .Due respect to these people(They have done excellent job in what Three.js is now) i am exporing these repositories to learn,share and contribute.

let's Start 

To be more compatible with different mobile platforms we need to declare viewport with device- width height.

The device width allows adjustment according to the changing devices be it a tablet or different mode
phones. 

The declaration 

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0">

This also implies that when we change the orientation of the device it gives a proper access of the app

The Style Tag

 
The Style Tag allows how the app is rendered to the devices.Here is the modification that shows how the app will look like.So now for this project we modify the Style tag accordingly


               <style>
                        body {
                                font-family: Monospace;
                                background-color: #f0f0f0;
                                margin: 0px;
                                overflow: hidden;
                        }
                </style>

for reloading to make easier so that we have to reload the pages again and again we include three.min.js within the head tag of the html including the script in the script tag
<script></script>. As we include the three.js script tag in the body we allow important actions to execute within the three.min.js script.Here in lies the logic of implementing the three.js and hence we need to include it to the head tag.

Now comes the turn for initialization of the variables or getting to implement the way the 3D GUI structure will behave we implement animations such as object movements interactions getting
in closer to the objects or moving out we start by calling the init() method.

In the entry point for three.js script we need to append Element and the chid behaviors.For getting Geometry to work we need to implement variables and their implementation logic
here.

 As we come across Three.js Script we see that it is essentially a 3D gui depiction involving

  •  i)Scenes
  • ii)Cameras
  •  iii)Projectors
  • iv)Renderers and Objects.

Certain modifications we have in Three.js script allows implementing plane Geometry  to Face normals

we use

var normalMatrix= new Three.Matrix3();

For creating a Shadow effect with the camera perspective we use this

camera= new THREE.perspectiveCamera(); 

Modifying the custom grid involves changes in the geometry hence we do the following


  var size = 500, step = 50;

                                var geometry = new THREE.Geometry();
 
                                for ( var i = - size; i <= size; i += step ) {
 
                                        geometry.vertices.push( new THREE.Vector3( - size, 0, i ) );
                                        geometry.vertices.push( new THREE.Vector3(   size, 0, i ) );
 
                                        geometry.vertices.push( new THREE.Vector3( i, 0, - size ) );
                                        geometry.vertices.push( new THREE.Vector3( i, 0,   size ) );
 
                                }
 
                                var material = new THREE.LineBasicMaterial( { color: 0x000000, opacity: 0.2 } );
 
                                var line = new THREE.Line( geometry, material );
                                line.type = THREE.LinePieces;
                                scene.add( line );
 

We use projector to change the behavior of the objects and also implementing mouse movements and to select certain objects.This also helps in projection in a screen space.

 The light reflection as well as ambient light effect is controlled in these lines of code.This also shows how the lighting effect will be.

var ambientLight = new THREE.AmbientLight( 0x606060 );

Taking a look at variable declaration

target=new THREE.Vector3(0,200,0);

In this declaration above we declare a 3D vector.A 3D vector is in general a geometric quantity that has magnitude and direction

var normalMatrix=new THREE.Matrix 3();

It's a 3*3 matrix.

For projection purpose we use mouse 2D and mouse 3D

More modifications and the whole code of the html is shown below it create a grid and you can place the boxes  and design it .This is a excerpt modified from the link


 <!DOCTYPE html>
<html lang="en">
        <head>
                <title>three.js canvas - interactive - voxel painter</title>
                <meta charset="utf-8">
                <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
                <style>
                        body {
                                font-family: Monospace;
                                background-color: #f0f0f0;
                                margin: 0px;
                                overflow: hidden;
                        }
                </style>
        </head>
        <body>
 
                <script src="../build/three.min.js"></script>
 
                <script src="js/libs/stats.min.js"></script>
 
                <script>
 
                        var container, stats;
                        var camera, scene, renderer;
                        var projector, plane;
                        var mouse2D, mouse3D, raycaster, theta = 45,
                        isShiftDown = false, isCtrlDown = false,
                        target = new THREE.Vector3( 0, 200, 0 );
                        var normalMatrix = new THREE.Matrix3();
                        var ROLLOVERED;
 
                        init();
                        animate();
 
                        function init() {
 
                                container = document.createElement( 'div' );
                                document.body.appendChild( container );
 
                                var info = document.createElement( 'div' );
                                info.style.position = 'absolute';
                                info.style.top = '10px';
                                info.style.width = '100%';
                                info.style.textAlign = 'center';
                                info.innerHTML = '<a href="http://redirect.viglink.com?key=11fe087258b6fc0532a5ccfc924805c0&u=http%3A%2F%2Fthreejs.org" target="_blank">three.js</a> - voxel painter<br><strong>click</strong>: add voxel, <strong>control + click</strong>: remove voxel, <strong>shift</strong>: rotate, <a href="http://redirect.viglink.com?key=11fe087258b6fc0532a5ccfc924805c0&u=javascript%3Asave%28%29">save .png</a>';
                                container.appendChild( info );
 
                                camera = new THREE.PerspectiveCamera( 40, window.innerWidth / window.innerHeight, 1, 10000 );
                                camera.position.y = 800;
 
                                scene = new THREE.Scene();
 
                                // Grid
 
                                var size = 500, step = 50;
 
                                var geometry = new THREE.Geometry();
 
                                for ( var i = - size; i <= size; i += step ) {
 
                                        geometry.vertices.push( new THREE.Vector3( - size, 0, i ) );
                                        geometry.vertices.push( new THREE.Vector3(   size, 0, i ) );
 
                                        geometry.vertices.push( new THREE.Vector3( i, 0, - size ) );
                                        geometry.vertices.push( new THREE.Vector3( i, 0,   size ) );
 
                                }
 
                                var material = new THREE.LineBasicMaterial( { color: 0x000000, opacity: 0.2 } );
 
                                var line = new THREE.Line( geometry, material );
                                line.type = THREE.LinePieces;
                                scene.add( line );
 
                                //
 
                                projector = new THREE.Projector();
 
                                plane = new THREE.Mesh( new THREE.PlaneGeometry( 1000, 1000 ), new THREE.MeshBasicMaterial() );
                                plane.rotation.x = - Math.PI / 2;
                                plane.visible = false;
                                scene.add( plane );
 
                                mouse2D = new THREE.Vector3( 0, 10000, 0.5 );
 
                                // Lights
 
                                var ambientLight = new THREE.AmbientLight( 0x606060 );
                                scene.add( ambientLight );
 
                                var directionalLight = new THREE.DirectionalLight( 0xffffff );
                                directionalLight.position.x = Math.random() - 0.5;
                                directionalLight.position.y = Math.random() - 0.5;
                                directionalLight.position.z = Math.random() - 0.5;
                                directionalLight.position.normalize();
                                scene.add( directionalLight );
 
                                var directionalLight = new THREE.DirectionalLight( 0x808080 );
                                directionalLight.position.x = Math.random() - 0.5;
                                directionalLight.position.y = Math.random() - 0.5;
                                directionalLight.position.z = Math.random() - 0.5;
                                directionalLight.position.normalize();
                                scene.add( directionalLight );
 
                                renderer = new THREE.CanvasRenderer();
                                renderer.setSize( window.innerWidth, window.innerHeight );
 
                                container.appendChild(renderer.domElement);
 
                                stats = new Stats();
                                stats.domElement.style.position = 'absolute';
                                stats.domElement.style.top = '0px';
                                container.appendChild( stats.domElement );
 
                                document.addEventListener( 'mousemove', onDocumentMouseMove, false );
                                document.addEventListener( 'mousedown', onDocumentMouseDown, false );
                                document.addEventListener( 'keydown', onDocumentKeyDown, false );
                                document.addEventListener( 'keyup', onDocumentKeyUp, false );

                                //
 
                                window.addEventListener( 'resize', onWindowResize, false );

                        }
 
                        function onWindowResize() {
 
                                camera.aspect = window.innerWidth / window.innerHeight;
                                camera.updateProjectionMatrix();
 
                                renderer.setSize( window.innerWidth, window.innerHeight );
 
                        }
 
                        function onDocumentMouseMove( event ) {
 
                                event.preventDefault();
 
                                mouse2D.x = ( event.clientX / window.innerWidth ) * 2 - 1;
                                mouse2D.y = - ( event.clientY / window.innerHeight ) * 2 + 1;
 
                                var intersects = raycaster.intersectObjects( scene.children );
 
                                if ( intersects.length > 0 ) {
 
                                        if ( ROLLOVERED ) ROLLOVERED.color.setHex( 0x00ff80 );
 
                                        ROLLOVERED = intersects[ 0 ].face;
                                        ROLLOVERED.color.setHex( 0xff8000 )
 
                                }
 
                        }
 
                        function onDocumentMouseDown( event ) {
 
                                event.preventDefault();
 
                                var intersects = raycaster.intersectObjects( scene.children );
 
                                if ( intersects.length > 0 ) {
 
                                        var intersect = intersects[ 0 ];
 
                                        if ( isCtrlDown ) {
 
                                                if ( intersect.object != plane ) {
 
                                                        scene.remove( intersect.object );
 
                                                }
 
                                        } else {
 
                                                normalMatrix.getNormalMatrix( intersect.object.matrixWorld );
 
                                                var normal = intersect.face.normal.clone();
                                                normal.applyMatrix3( normalMatrix ).normalize();
 
                                                var position = new THREE.Vector3().addVectors( intersect.point, normal );
 
                                                var geometry = new THREE.CubeGeometry( 50, 50, 50 );
 
                                                for ( var i = 0; i < geometry.faces.length; i ++ ) {
 
                                                        geometry.faces[ i ].color.setHex( 0x00ff80 );
 
                                                }
 
                                                var material = new THREE.MeshLambertMaterial( { vertexColors: THREE.FaceColors } );
 
                                                var voxel = new THREE.Mesh( geometry, material );
                                                voxel.position.x = Math.floor( position.x / 50 ) * 50 + 25;
                                                voxel.position.y = Math.floor( position.y / 50 ) * 50 + 25;
                                                voxel.position.z = Math.floor( position.z / 50 ) * 50 + 25;
                                                voxel.matrixAutoUpdate = false;
                                                voxel.updateMatrix();
                                                scene.add( voxel );
 
                                        }
 
                                }
                        }
 
                        function onDocumentKeyDown( event ) {
 
                                switch( event.keyCode ) {
 
                                        case 16: isShiftDown = true; break;
                                        case 17: isCtrlDown = true; break;
 
                                }
 
                        }
 
                        function onDocumentKeyUp( event ) {
 
                                switch( event.keyCode ) {
 
                                        case 16: isShiftDown = false; break;
                                        case 17: isCtrlDown = false; break;
 
                                }
                        }
 
                        function save() {
 
                                window.open( renderer.domElement.toDataURL('image/png'), 'mywindow' );
                                return false;
 
                        }
 
                        //
 
                        function animate() {
 
                                requestAnimationFrame( animate );
 
                                render();
                                stats.update();
 
                        }
 
                        function render() {
 
                                if ( isShiftDown ) {
 
                                        theta += mouse2D.x * 3;
 
                                }
 
                                camera.position.x = 1400 * Math.sin( theta * Math.PI / 360 );
                                camera.position.z = 1400 * Math.cos( theta * Math.PI / 360 );
                                camera.lookAt( target );
 
                                raycaster = projector.pickingRay( mouse2D.clone(), camera );
 
                                renderer.render( scene, camera );
 
                        }
 
                </script>
 
        </body>
</html>

 The project as it looks in the emulator 

After the experiment we see that adding simple modification to the index.html and adding required three.js files givesyou some cool gui effects that yo can use in your projects.

  • The possibilities are endless with three.js as you can also develop games with it.
  •  Three.js is an excellent WebGL tool that helps you explore 3D GUI applications in an innovative manner.  

Now when you combine the Intel XDK IDE you can get some great APK's created with it.

  Nexus7  Emulator Images

This article is an attempt  to showcase how Three.js can be develop good GUI based WebGL Android app using Intel XDK IDE.For the entire project process Internet connectivity is required.As i learn more i will try to contribute more.  GITHUB repository for Three.js Check the examples and experiment.I had fun tweaking the codes.  

 Good resources  

You will Know a lot and get good knowledge out of  questions of Three.js at StackOverflow

Intel XDK Documentation

Three.js documentation

APK Examples and the Code link

Intel, Latest Technology

What Will Win in 2014: Mobile, Wearables, and Developers

It’s that time of year when various pundits sharpen their pens and make predictions on what they think will be trending for the coming 365 days. Predictions are usually based on what happened the previous year, especially when it comes to technology, and this year’s predictions definitely follow that methodology, with very few big surprises or outliers. It doesn’t take a crystal ball to extrapolate technology trends and logically plot where they might go in the next year, but it will be interesting come the end of 2014 to see which predictions were correct and which ones were wildly off the mark (and there’s always more than a few of those!).

Wearables

Gadgets like Google Glass and the smartwatch just barely had time to pick up steam in 2013, but many pundits agree that wearable technology will be one of the strongest trends to watch in 2014. Google Glass really started the purchasing power of the wearables market with a vengeance, and many people are looking forward to purchasing their copy of this smart gadget, along with smart TVs, smart watches, and smart home technology.  Key technologies here will include connectivity, extremely sophisticated image recognition, and NFC. NFC – near field communication - can be used between two devices so they can “talk” to each other with or without touching, usually at close range. There’s quite a few applications of this technology already out there, for example, zero-contact payment systems, e-ticket smartcards, mobile payments, virtual wallets, public transport, box offices, and more on the horizon.

There are different schools of thought on how much personalized information is safe to share via NFC; personally, I’m definitely on the side that says “as little as possible”. But wouldn’t it be nice to have all your stored networking information (name, email, phone, business card, resume, past jobs, LinkedIn profile, portfolio of work, articles, etc.) in one convenient hub that could be instantly ported over via NFC to someone you’re talking to? You could have different levels of shareability on this as well: perhaps one level for networking contacts, one level for friends, one level for family, and so on. Instead of doing the business card dance with promises to email more later, you could just use an app on your NFC-enabled smartwatch to instantly transfer information; no muss, no fuss.

Wearables showed up at IDF 2013 in the keynote given on Day One of IDF 2013 by new Intel CEO Brian Krzanich and new President Renee James, touching on such subjects as datacenters, ultra-mobile devices such as tablets, phones and wearables, and “lifestyle computing”. One of the biggest confirmations of whether or not wearables will really take off in 2014 will happen in just a couple weeks at CES, which is scheduled for January 7-10, 2014 in Las Vegas, Nevada. The really big showstoppers are sure to be there, but wearables are slated to make a big splash as well:

“…wearable computers may not achieve huge commercial success so quickly, said Jon Peddie, president, Jon Peddie Research.”We’re in the very early days with wearable computers in terms of experimentation," he said, pointing out how companies are still defining the right usage models, the right physical size and where exactly people would wear these things. He called the current first wave of wearable devices disappointing, but has no doubts that companies will figure things out. "Long term, wearable computers are definitely going to be a component among the things that we have because they will augment our life," he said. "It will help us get through the world, navigate commerce, airports and social situations." -  “Will wearable technologies steal the 2014 Consumer Electronics Show?” iq.intel.com

Mobile

If just one field of technology could be said to have ruled 2013, most industry analysts would agree that mobile development and mobile form factors would take the first prize ribbon. Mobile PCs, mobile phones, and tablets are expected to continue to increase, especially touch-enabled form factors. According to the quarterly Mobile PC Shipment and Forecast Report from NPD Display Search, mobile form factors are not going anywhere:

  • The mobile PC market is expected to increase from 367.6 million units shipped in 2012 to 762.7 million globally by 2017, driven by touch-enabled form factors
  • The majority of this shift will come as tablet PCs begin to replace notebook PCs this year as the dominant mobile PC form factor, and touch becomes a key feature in mobile PC adoption.   
  • Notebook PC shipments are expected to decline 10% over the next four years, from 203.3 million in 2013 to 183.3 million in 2017, but there will be pockets of growth. Shipments of notebooks with touch capabilities are expected to grow 48% Y/Y in 2014.

As long as tablet PCs continue to offer users what they have continually been choosing in their form factors – great design, robust battery life, and quick response – this particular market will continue to grow.

What about the mobile ecosystem that provides that ying to this yang? Mobile app development is just starting to hit its stride, and as users demand more and more apps to meet a wide variety of needs this will only continue to grow.  Keeping in mind that this is a very young market that is barely getting started, here are just a few numbers grabbed from 2013 statistics:

  • There are 641 new apps in the App Store per day - and more than 19,000 new apps every month - ReadWriteWeb
  • Google last reported 700,000 apps in the Google Play Store, which made the app store tied with the Apple App Store at the time in quantity of apps - InsideMobileApps
  • DragonVale developer Backflip Studios and Supercell, developer of Clash of Clans and HayDay, raked in a combined $100 million for their freemium titles DragonVale and Clash of Clans.
  • Flurry estimated that a record-breaking 17.4 million iOS and Android devices were activated on Christmas Day, along with an equally record-breaking 328 million application downloads. Studying the data from December 25 – December 31, additional records were set, now for the highest number of device activations and app downloads of any week in history. Over the holiday week, Flurry estimates that over 50 million iOS and Android devices were activated, and 1.76 billion applications were downloaded.  -  Flurry.com
  • Apple’s current App Store count lies at the 775,000 apps mark (with more than 300,000 native iPad apps) and a total of $7 billion paid to developers for their apps. Those apps are available to users in 155 countries around the world. - TheNextWeb

In an interview with Bloomberg TV, Google CEO Eric Schmidt states his claim that mobile is the “trend to follow” for 2014, and that people with connected devices (aka tablets, smartphones, and the above-mentioned wearables) will have an advantage over other people:

“The trend has been that mobile was winning, it’s now won,” he said. “There are more tablets and phones being sold than personal computers. People are moving to this new architecture very fast.” He continued, “The biggest disruptor that we’re sure about is the arrival of big data and machine intelligence everywhere. The ability to find people, to talk specifically to them, to judge them, to rank what they’re doing, to decide what to do with your products, changes every business globally.” -  “Eric Schmidt says mobile has won 2014”, TheVerge.com

Developers

I’ve written a lot about developers in this space this year, and there have been a few trends that stick out that I think will continue in 2014.

Motivation: The sense of achievement and not profit is what really drives developers (although nobody’s going to turn down a check). I’ve talked to developers who have literally been up for three days straight to figure something out, simply for the love of programming. According to a recent survey, creativity and a sense of achievement are what make the difference for 53% of developers, while the most important goal for 33% of those surveyed is simply gaining knowledge, having fun, or making strides towards self-improvement.

Platforms: iOS and Android won the day in 2013, and I believe that this trend will continue in 2014. In fact, SiliconAngle found that Android, iOS and HTML5 are the top three platforms chosen by developers across all the regions where the survey was conducted.  In North America, 67 percent of developers use Android, 62 percent on iOS, and 55 percent on HTML5. The survey revealed that three main things affect developer choice, and that is Speed and cost of development, revenue potential, and the ability to reach target consumer.

Developers choose Android because it is faster and cheaper to develop apps for this platform, but if they want bigger revenue, they’d opt for iOS. I see this changing in 2014, with more and more developers switching over to Android and HTML5 as their platforms of choice, and with the tools that Intel has provided for Android and other mobile platforms, it’s exciting to imagine the possibilities.

Rise of the Indies: You don’t have to be attached to a big name studio to really make a success of yourself; on the contrary, 2013 saw independent game development take on a life of its own with a much lower entry barrier as far as revenue needed for success. Independent game development and smaller indie teams are making steady gains as seen in a survey from the Game Developers Conference; 53% of respondents identified themselves as “indie developers”, and 51% of these had been developing games for less than two years

Cross-platform mobile development: If you’re familiar with the term “don’t put your eggs in one basket”, then you’ll know what I mean when I say that cross-platform mobile development is only going to increase in 2014. A report titled “Cross Platform Mobile Development Tools Market Analysis and Forecast” published by Smiths Point Analytics reports that the market for cross-platform mobile development tools exceeds $1.6 billion right now, and is expected to reach $8.2 billion by 2016: “Developers are taking a number of cross platform development approaches and successful developers will match the right tools and approach to appropriate requirements and use cases. With the complexity of mobile app development continuing to grow, the tools vendors’ ability to reduce development time and increase application reach is generating significant opportunities. This new trend in mobile application development will also help fuel and more open and prosperous mobile app ecosystem.”

What’s your crystal ball prediction?

From wearables to mobile app development to the rise of the independent developer, there was a strong push to interconnectivity that was the overreaching theme of 2013 – and what I believe will be the continued push into 2014. What’s your prediction for where we will go in 2014?

Intel, Latest Technology

Bubble, Bubble, Toil and Trouble; Mutex Lock and Buffer Double

A problem that I’ve been seeing recently within genomic codes stems from the I/O required. Before you can start processing them, large data files of DNA reads have to be read into memory and converted to a format that will be used by the computation, e.g., compressing the byte-sized characters (“A”, “C”, “T”, or “G”) to a 2-bit equivalent. The natural way to code up this processing is to input a read, call some conversion function, and store the result. Repeat until all files have been input.

While it is commonly accepted knowledge that I/O can be a bottleneck to performance, regardless of the relative speed between the input of a DNA read and the initial processing/storing of that input, the above serial execution is leaving some easy parallelism on the table. Obviously, the conversion processing of each read is likely independent of the conversion of some other read, but, more to my point, the input of a new read is independent of the conversion of the previous read. Overlapping computation and I/O by having a separate thread doing each of the two tasks is a good way to boost performance when it can be done.

However, to keep the results of the input and conversion correct I can’t be overwriting the previous unconverted read by a new read (like stabbing a perfectly usable King Duncan in his sleep). Nor do I want to re-process an already converted read (like raging at an empty chair as if Banquo’s ghost was sitting there). To this end, I can declare and use a second input buffer. While the I/O thread is filling up one buffer with the next read, the conversion thread can be working on processing the previous read. In this post I want to sketch out one way you can coordinate the two threads without having them overwrite good data or pull out stale data from the two shared buffers.

You may have realized that the cooperation between the input and conversion threads is an example of the Producer/Consumer pattern. The (pseudo-) code below is an implementation of Producer/Consumer with a shared double buffer structure used to pass items from the Producer thread to the consumer thread. I’ve implemented it with Pthreads to use a condition variable for control of access to the two buffers. First, declarations for the buffers, some index pointers, and the synchronization objects, all of which are visible to both producer and consumer threads.


        #define BUFSIZE 3

        dnaReadType buffer[BUFSIZE];

        int in=1;   // index to store next element

        int out=0;  // index of last removed element

        pthread_mutex_t b_lock=PTHREAD_MUTEX_INITIALIZER;

        pthread_cond_t b_cond=PTHREAD_COND_INITIALIZER;

        

I’ve allocated an array of three items to hold whatever data or structure, called dnaReadType, I’m inputting from a file. This could just as easily be an array of pointers to allocated memory if the input isn’t a known or constant size. (This latter idea is more in keeping with multiple data buffers. The single array buffer is then simply syntactic sugar to quickly reference one or the other and to easily switch from one data buffer to another.) Either way, the consumer (conversion) thread will be accessing the data from one element while the producer (input) thread fills up another. The in index will refer to the element that is next to receive new data from the producer and the out index will reference the element that last held a read for conversion by the consumer. The mutex, b_lock, and condition variable, b_cond, will be used to control access to the buffer elements and to protect updates to in and out.

The scheme and code I describe below requires that the number of items in buffer (given as BUFSIZE) be one more than the number of data buffers I want to use. This makes the test for a full or empty set of data buffers easier to code, as I’ll explain below.

If the data buffers are full (i.e., two buffer elements contain valid data awaiting conversion) the producer must wait until a slot opens up. Otherwise the new read can simply be put into the open position of buffer. The relevant code for the Producer is given here:


        while (more to produce){

           newRead = getNewRead(inputFile); // produce something

           pthread_mutex_lock(&b_lock);   

           while (out == in)                // buffer is full

              pthread_cond_wait(&b_cond, &b_lock);                                          

           buffer[in++]= newRead;           // store in buffer

           in %= BUFSIZE;

           pthread_cond_broadcast(&b_cond);                                               

           pthread_mutex_unlock(&b_lock);                                                 

        }

        

After inputting some new read from the input file, the mutex b_lock controls access to buffer and protects the reading and writing of the in and out index variables. The conditional expression checks the status of buffer. The buffers are full if out and in reference the same item in the array. This item is the extra element (which is not considered part of the usable buffer) that I included by making BUFSIZE equal to 3 for a set of two data buffers. While this array slot can (and will) hold data at some point, it is not considered a valid entry whenever two data buffers both contain unprocessed reads. Whenever buffer is full, the producer thread goes to “sleep” on the condition variable, b_cond.

At such time as the consumer signals that at least one of the data buffers is available, the producer thread wakes up, stores the new read (or performs the input of new data), increments the in index with a modulus on the BUFSIZE, signals the consumer thread (in case it is waiting on an empty buffer), and releases the mutex to allow the consumer to access buffer.

The consumer thread code would be implemented like this:


        while (more to consume) {                                                           

          pthread_mutex_lock(&b_lock);                                                   

            while (in == ((out+1) % BUFSIZE))  // buffer is empty

              pthread_cond_wait(&b_cond,&b_lock);

            out++;

            out %= BUFSIZE;

            newRead = buffer[out];            // save data for processing

            pthread_cond_signal(&b_cond);                                                  

          pthread_mutex_unlock(&b_lock);

          ProcessRead(newRead);               // consume the data

        }

        

As with the producer code, the mutex, b_lock, controls access to buffer and the update of the out and in index variables. For the consumer, if the data buffers are empty, processing of a new read must be blocked. The conditional expression tests for the empty buffer. When the out index is found to be one position “behind” the in position (modulo the BUFSIZE), then buffer has no valid read stored in the next out position.

Once the consumer thread knows that there is at least one element to be converted by either being signaled to wake up or by finding a non-empty buffer (and skipping the call to pthread_cond_wait), the out index is incremented and the read stored in buffer[out] is pulled out for conversion. Before the new read is processed, the consumer must signal the producer (which may be waiting on full data buffers) and then release the mutex.

With any parallel algorithm that requires synchronized coordination between two or more threads, you need to consider whether or not the code actually will work in all cases. Better yet, prove that it works in all cases. For my Producer/Consumer code with a single instance of each, the tricky part is whether or not the tests for full and empty buffer will pan out as expected. As a thought experiment, if you’re unsure about the scheme I’ve just discussed, see if you can convince yourself that the following cases will work as expected: 1) the consumer thread finding the initially empty buffer, 2) the producer finding the initial empty buffer, 3) due to a slow consumer thread, the producer fills up buffer and then has one more item to be stored, and 4) due to an initially quick, but now slow producer thread, the consumer initially encounters a full buffer and proceeds to process all data stored (and wants more) before a new read can be input.

One last thing to note is that the size of the buffer can be much larger than 3 elements. You can also use more consumer threads if the conversion processing time is much slower than the time to input a new read from the input file. Similarly, more than one producer can be added to the above code. The scenarios needed to prove that everything still works as it should become a bit more complex, but nothing that some simple logic and hand-waving can’t accomplish. I mean, it’s not like trying to get the Great Birnam Wood to come to Dunsinane to add to Macbeth’s long list of problems.

Intel, Latest Technology

Opinion: Matt’s Top 10 Tech & Gaming Predictions for 2014

Out with 2013 and in with 2014!!!

So here are my top ten (10) predictions for technology and gaming related things in the coming new year.  I can hardly wait!

1) PC "Next"?  It's your SmartPhone!  Expect the specs and performance of these little buggers to make some very interesting baby steps, and leaps.  In terms of 'wearable' computing I don't like wearing watches, glasses, necklaces, having piercings, wearing rings etc.  So the phone is as good as it gets for me, and likely most people, when it comes to 'wearable computing'.  The winner in this next age of computing will target your phone as having more convergence, not less.  So expect them to pair and connect better with things like Smart/er TVs & displays; and peripherals such as mice, keyboards, and gamepads.  Note:  My caveat here is if no one in 2014 realizes this, then shame on them, and the industry for such an obvious miss.

2) Tablets grow up.  There are dumb Tablets and there are smart Tablets. If you follow any of my previous blogs you'll know what I'm talking about.  Tablets are nothing more than a PC 'form-factor'.  Tablets such as Microsoft's Surface Pro, and other 2in1's demonstrate what a Tablet PC should and can be.  Expect marketing and some analyst firms to continue to obfuscate this for as long as possible. (They want you to buy both)  The reality of it though is that Tablets are nothing more than the latest bright shiny object of PC-land.  When Laptops came out there were similar debates about the impact to Desktops.  Ultimately we as consumers don't care so much about what form-factor the PC takes next, or what OS its running; just as long as it's allowing us to connect, run, & or play the software apps we love and care about.  (For work or play)

3) An Xbox Surface or something bigger?  After all - why wouldn't they?  I'll conjecture and take it a few steps further. Xbox has very much turned into Microsoft's entertainment brand.  So it's not just games anymore; but technically their portal to other forms of entertainment such as movies/tv/video, and music. (Long Live Zune). Ok, great, so what's the big deal?  I believe at this point they could do one of two things.  1) Either go bigger and turn Xbox into a more fully grown OEM-type brand. (ala Apple) This could be an attempt to divide consumer from business software applications. - OR - 2) Go smaller; but lock the OS and API's down even further in an attempt to position Xbox as being "premium" content in an effort to charge more for their connected cross screen cloud apps.  IMHO both of these are very poor decisions.  Please burn the Innovators Dilemma book since that has now turned into herd mentality strategic thinking - good grief.  I really hope I'm wrong on this #3.

4) Microsoft buys or invests heavily into an OEM Display Mfg.  I won't put this past them at this point.  Given OEM manufacturers (Mfgs) response to what Windows 8 and 8.1 and it's impact on their businesses; coupled with the over-hype of Tablets supposedly being the demise of PC's has really backfired for those with too many eggs in the Microsoft basket.  As a result, it's made many OEM's more vulnerable than before for purchase, and or takeover.  Even without an outright purchase many OEM's will be desperate to agree to many terms and conditions they wouldn't otherwise. We're likely to see Microsoft do more of what we've already seen in buying/propping up some select OEMs with cash/stock/etc (e.g. Dell).  Unfortunately I also expect us to lose a few OEMs over the next ~24 months.  I really hope I'm wrong in this prediction as well.

5) Google = Wow.  Given Google's success with Android, and even Chrome (especially this holiday); we should expect to see them gain additional traction in both the consumer and even work environments; both domestically and abroad.  Keep a close eye on their partnerships; especially with Amazon, and Samsung.  I fully expect both Android and Chrome to mature more fully and become more capable over time.

6) Apple's next big thing?  It seems that everyone is expecting Apple to unveil the 2nd coming in the next few years. Which is somewhat unfair to expect; but this is what happens when one sets such a high bar and former precedents.  Given their patent filings; we should start to see a bigger push from them into the living room. (Gamepads! Yay! Gaming from Apple finally?!?)  This will likely spark an even bigger "Destroy all Monsters" type of fight for what we affectionately here like to call the "Hearth".

7) Amazon = Dark Horse.  Given that Amazon has such an incredible online retail presence I fully expect them to go very big into more, not less, consumer devices in 2014.  We've already received tons of hints about their push into gaming into the living room as well.  This will most likely look like a Kindle on steroids (which I think they should call the Bonfire)((Should I tm that for them? Here - Kindle Bonfire(tm)).  I'd also keep a very close eye on their partnerships with the likes of Google (for Android), and Qualcomm (for Snapdragon, etc.).

8) Consoles vs PC Gaming.  This will be interesting to watch.  I'm not feeling the same sense of excitement for this 8th Gen of Consoles as there was for the previous generation.  Great, so GTA V hits a billion in 3 days.  This is awesome. There will always be a few games like that.  However; the true test will be to see how these suckers perform over the next 36 months. Remember that 'Destroy all Monsters' analogy I just mentioned?  Consider this: the 8th Gen's biggest competitor is ironically the previous 7th Gen.  PC's are going bigger into the living room.  (Enter SteamMachines & even just normal Windows/MacOSX PCs).  We have Amazon and Apple likely making a play.  So grab a bag of popcorn. This will be interesting to watch and see how this unfolds over the next few years.  Ultimately I think the real form factor winner for gaming will look something like today's TabletPC form factors.  (+Docking Stations for enhanced graphics etc).  PC Gaming will continue to dominate globally revenue-wise.  I expect Xboxes in China to perform about as well as they did in S. Korea.  What a lot of people still fail to understand is that Consoles tend to be a luxury item in most of the known world.  A smart strategist would pass go, collect the $200, and converge the platforms.

9) Smarter Devices and Voice.  Well... my voice prediction for 2013 didn't get as far as I'd hoped - darn it.  I'm still hopeful that someone will create something like we see in the Iron Man movies such as the "Jarvis" personal assistant.  (A PA?)  Couple that with more RFID-type enabled devices; which can be embedded in nearly anything nowadays such as business cards, trading/game cards, clothes, toys (e.g. Skylanders, Infinity, etc), you name it; and we now have a recipe for some very interesting connected and smarter homes, and businesses.  A little too 'Big Brother'? Yes; which is why I want my "PA-Jarvis" to be locally hosted, and not in the cloud.  I'm hoping my Jarvis will be my first line of defense before I go on the www.  This type of artificial intelligence (AI) is reason enough for me start demanding more personal computing horsepower again.

10) Big Data.  Am I the only one sick and tired of hearing about this?  I'm pretty sure the NS of A is more than willing to share with us all what a PITA it is to suss through that much data.  I do find it amusing that all those tin-foil hat people that we all used to make fun of might have actually been onto something.  Who are we really helping when there's an algorithm that enables so few to have access to so much data?  I have to stop and ask myself, how does this really help me, or anyone for that matter?   For now I'll just have to trust that it'll never be abused or hacked into.  /sigh.

Sorry for the long post.  I love to pontificate on the future; and hopefully some of my predictions never come to pass!  I hope you've all had a great 2013!?  I hope you all have an even better 2014!  Onward and upward!

Best wishes,

Matt

Intel, Latest Technology

Intel® Xeon Phi™ coprocessor Power Management Configuration: Why should I worry about configuring anything?

Previous blogs on power management and a host of other power management resources can be found in List of Useful Power and Power Management Articles, Blogs and References.

WHAT AND WHY DO WE WANT TO CONFIGURE IT

There are several reasons why you might want to configure your power management in different ways. For example, you may want to disable turbo due to the sensitivity of your application to OS jitter. The table below lists some of the reasons you might want to change a power setting.

Power setting change

Reason

Turbo off

  1. Your application is particularly sensitive to OS jitter
  2. Your cluster cannot exceed a certain fixed power ceiling
  3. Your application needs a constant frequency (meaning it is sensitive to variations in the frequency of the processor)

Turbo on

  1. You want your application to get every performance boast that is possible
  2. Your application has (relatively) frequent periods of “rest” such that turbo has the potential of providing a significant performance boost.

PC6 enable

  1. Your application has no special thermal or latency requirements
  2. Your application has long periods of inactivity
  3. Your cluster has a low thermal ceiling and relatively long periods of coprocessor inactivity

PC6 disable

  1. Your application cannot tolerate the high latency inherent in reactivating an application between periods of low activity
  2. Your application cannot ignore coprocessor directed PCI events

PC3 enable / disable

Examples similar to that of PC6 enable/disable with the exception of PCI events. Latency dramatically increases once you drop into PC3 since the part of the coprocessor power management module that is on the host needs to initiate an exit from PC3 back to C0.

P1 enable / disable

  1. The cooling capability of your host/coprocessor system needs to be “smoothed” to avoid thermal spikes (enable)
  2. Your application has no special thermal requirements (enable)
  3. Your application needs a constant frequency, meaning it is sensitive to variations in the frequency of the processor (disable)

CO6 enable / disable

  1. Your application is particularly sensitive even to short latencies (disable)
  2. Your application has no special thermal or latency requirements (enable)

In a smaller cluster, you may want to experiment with enabling versus disabling turbo. Enabling or disabling various power management states may give you some performance gain for specific workloads.

If you are designing a large cluster, you may want to disable turbo because it may increase the headroom your thermal extraction system (e.g. air conditioning) needs to support the coprocessor. This can be the case even if the average meets your specifications.

NEXT: Intel Xeon Phi coprocessor Power Management Configuration: Using the micsmc GUI

REFERENCES

Kidd, Taylor (2013, October) List of Useful Power and Power Management Articles, Blogs and References, revision 1.0, Intel® Developer Zone website, Intel® Corporation, http://software.intel.com/en-us/articles/list-of-useful-power-and-power-management-articles-blogs-and-references

Intel, Latest Technology

Doctor Fortran in “It’s a Modern Fortran World”

I recently received a copy of "Numerical Computing with Modern Fortran", by Richard Hanson and Tim Hopkins, and noted how many books on Fortran are being published recently with "Modern Fortran" in the titles. It turns out this is not a new phenomenon - a search on Amazon.com shows that this phrase has been used for books on Fortran 90 and even Fortran 77! I chatted about this with two of the newer books' authors, asking why they felt it necessary to qualify Fortran that way. The answer was generally that many programmers' view of Fortran is stuck in the F77 or even F66 days and that it was helpful to prod them into thinking of Fortran as modern, which of course it is. A side benefit, I guess, is that they can reuse the title when the standard changes!

Anyway, I decided to take this space to list the current set of "modern" books on the market, some of which I have read and some I haven't. They're all different and appeal to different audiences and needs.

Numerical Computing with Modern Fortran - Richard J Hanson and Tim Hopkins - SIAM, 2013, ISBN 978-1-611973-1-2

I've known Dr. Hanson professionally for a number of years - he was formerly the chief mathematician at Visual Numerics, Inc. (now Rogue Wave Software), developers of the IMSL library. Dr. Hanson was the first customer to ever ask me what Intel's plans were for coarrays, which at that time was still a proposal for Fortran 2008. When he sent me a copy of his book, I was expecting a text heavy on mathematical formulae, but that's not what we have here.

The audience Hanson and Hopkins have in mind is the Fortran programmer who is well versed in older versions of the language, but is unfamiliar with Fortran 2003/2008 or isn't sure how the new features would be beneficial. This is not a reference book nor a "learn Fortran from scratch" text. The authors methodically work their way through sets of features that are new: free-form source, modules, derived types, generic procedures, polymorphism and recursion. Each chapter introduces the concepts in an incremental fashion, showing how they are applicable to things often found in numerical programming.

But there's more... After a couple of "case study" chapters, Hanson and Hopkins devote chapters to parallelism (OpenMP, MPI and coarrays), the IEEE Floating Point intrinsic modules and C interoperability. Finally there are chapters on cleaning up obsolete code, software testing, compilers and other useful tools.

I liked this book a lot and recommend it to anyone who thinks their Fortran skills are "rusty". The writing style is very approachable and it's useful even for those not doing numerical computing.

Modern Fortran in Practice - Arjen Markus - Cambridge University Press, 2012, ISBN 978-1-107-60347-9

I have never met Arjen Markus, but he has been a frequent contributor to the Intel Fortran user forums and we've corresponded a lot. His book has a similar approach to that of the Hanson/Hopkins work above in that it assumes you know the fundamentals of at least Fortran 77 and walks you through things that have been added to the language since then. Markus focuses more on practical examples, and covers topics such as memory allocation, C interoperability and takes a useful diversion into adding graphics, GUI and Internet communication to Fortran code. He also spends some time on writing robust code and how to test it properly, topics that are extremely valuable. Markus also has a chapter on parallelism, again covering OpenMP, MPI and coarrays. There's a lot of good advice in this book.

Modern Fortran - Norman Clerman and Walter Spector - Cambridge University Press, 2012, ISBN 978-0521514538

While I had not met Norm Clerman in person until just a year or two ago, he's been a customer for perhaps 15 years. His optical modeling program brought out the worst in Digital Visual Fortran, and it took several years of bug fixing before we could even compile his whole program. His code was elegant, but it made heavy use of Fortran 90 modules, public/private attributes, USE renaming and more. Over the years, the number of bug reports dropped and he continued to use the Digital, Compaq and then Intel compilers. Clerman was tickled to hear that we had an entire test suite composed of only his sources.

I have not read Clerman and Spector's book, but like the others I discuss above it seeks to bring a Fortran programmer up to speed with what the current language offers, with a dose of style recommendations that I am sure are worthwhile.

Modern Fortran Explained - Michael Metcalf, John Reid and Malcolm Cohen, Oxford University Press, 2011, ISBN 978-0199601417

This is the book that most everyone who is learning Fortran has on their desk. I don't think I've met Mike Metcalf, but John Reid and Malcolm Cohen I know well through the Fortran standards committee. Reid is the ISO Fortran Working Group chair and Cohen has been the editor of the standard for many years. Unlike the books above, this is a complete reference for the language and is one of the first places our developers turn when they want to better understand a feature they're implementing. It's much more readable than the Fortran standard itself and has lots of explanatory text and examples.


There's yet another "Modern Fortran" book in the works by Damian Rouson, who currently teaches at Stanford University. I've met Damian a few times and we've had extended conversations over email and telephone. He already has one book out, Scientific Software Design: The Object-Oriented Way,  which can give you a hint as to where his interests lie. This one probably won't be published until 2015, he tells me.

Intel, Latest Technology

Top 5 reasons in 2013 to say ‘Thank You’ to our Intel Technology Providers

1.  Socializing with us and your peers – over 2,000 of you are connected on Intel   Technology Provider social communities.

2.   Rocking your training – you earned 340,000 training credits this year

Special thanks to our 1.7K Intel Technology Experts!

3.   Program growth – the number of qualifying Gold + Platinum members has grown almost 50 percent.

4.   Achievement – as a group, this year, you have earned more than 50 percent more points over last year.

And last but not the least

5. You are the absolute best Intel advocates in the industry!

Thank you for another fabulous year, we can’t thank you enough for all your contributions!

Many more reasons to say ‘Thank You’ for a great year

As 2013 comes to a close (where did the year go?), we look back on a time that saw a lot of transition. You, our partners, were on the front lines helping to lead that transition by bringing your expertise and truly exciting, new technology to the market.

Over the past year, we increased investments to significantly expand benefits for our partners. We hope you took advantage of the programmatic benefits we instituted:

o   Rewards for branded system sales: Working collaboratively with our PC OEM partners we delivered sales training and resources to help grow your businesses, and we are rewarding Intel-based system sales through distribution

o   Social communities further evolved to help us connect with you and create ongoing dialogue beyond events. If you haven’t already done so, please join us on LinkedIn, Twitter and/or Facebook, to stay connected all the time.

o   Intel product and technology content was made readily available and is now actively syndicated by more than 400 ITPs who are leveraging these assets to enable lead generation. In 2014, we will enhance this benefit with social capabilities and more lead gen hooks.

Again, thanks to your efforts and dedication, we have grown our Gold and Platinum member base 50 percent over last year. We remain committed to fortifying your ITP status and providing you with tools to help you succeed. We pledge to deliver:

The Right Benefits – Rewarding partners across all levels of integration with points as well as valuable resources to help grow their businesses, including sales support, lead generation and co-marketing

The Right Engagement – Making channel tools and resources available via multiple domains: web, social and mobile

The Right Content – We’ll help you keep up with the pace of innovation with access to the latest technology, event updates, and research on trends that impact your customers – and your business

Look for Intel to continue to bring you innovative technology along with the rock-solid support you deserve to help you grow with us in 2014 and beyond.

Best wishes for a happy, healthy and prosperous year ahead!

Intel, Latest Technology

Solid Performance. Solid Sales. Solid-State.

If the thought of selecting and implementing the best enterprise storage solution gives you chills like a stiff wind off of Lake Michigan, fear not. This succinct video series is primer on Intel Solid-State drives that will help you turn up the heat on your enterprise storage sales.

These instructional videos, presented by CRN, will help you compare, assist you with selecting the best SSD solutions, give you useful tips that can help you sell SSDs to your customers, and show you tools and techniques that make implementation hassle free.

So sit back and tune in.

Making the Switch to SSD

Data keeps getting bigger, and you’re pressed to keep your customers up and running, maintaining demanding service levels.

Usage and demand for spontaneous access continues to grow and it drives a bottleneck in the data center, which can be tied directly to hard disks. Hard disks cannot keep up with the processing power of today’s data centers. It’s time to look at making the switch to SSDs that utilize much faster NAND flash. Plus they’re about 90 percent more energy efficient.

This video touches on basic SSD technology, file optimization and guidance on making the switch to SSD.

Watch this VIDEO

 

Using SSDs to Improve Server Performance

This video looks at a case study that was performed by Intel’s internal IT department, in which an email server’s 40 HHDs were replaced by 16 Intel DC-S3700 data center SSDs.

The results were pretty remarkable. Email transaction rates were a full six times faster than before, user authentication took place in half the time, and server CPU headroom was increased by 50 percent. Additionally, rack space and cooling requirements were reduced significantly and energy efficiency increased.  (You can read the study at intel.com/it.)

Watch this VIDEO

Using SSD-Based Caching to Improve Application Performance

With today’s high-speed, multi-core CPUs, the bottleneck has shifted to the storage subsystems. That’s particularly true on highly virtualized systems or I/O intensive applications such as SQL Server and Exchange.

Oftentimes, companies attack these problems by throwing storage, server memory or even more servers at the problem. Just as often the result is high costs and meager improvements. A better and more cost effective solution might be to attack the problem from the inside, with caching software.

Watch this VIDEO

 

Optimizing Cache Performance Through SSDs

Solid-state drives increase performance and reduce lag time over HDDs. But what if you could harness that to make server workloads run even faster? That’s the idea behind cache optimization.

Cache optimization software intelligently caches frequently used data via the SSD. It integrates the SSD cache with the server DRAM cache so programs and data can be delivered at high performance flash speed. Using multi-level caching to intelligently select the frequently used data to store in the cache, the software selects the cache level that can deliver the data at the fastest rate. Optimization can be performed on physical servers or virtual machines, so the software can leverage either local or remote SSDs.

Intel’s Cache Acceleration Software (CAS) is vendor agnostic so it can work with just about any storage hardware – great news for solution providers looking for ways to improve their clients’ data centers.

Watch this VIDEO

Selecting the Right SSD Solution.

Not all SSDs are created equal. Capacity, performance and costs can vary a lot. How do you select the right solution for your customers?

One of your first considerations should be NAND flash type (SLC, MLC, or eMLC) in relation to your customers’ applications. SLC is generally faster, more durable and more power efficient than MLC, which is higher density and less expensive, but it uses more energy. Enterprise-level MLC NAND flash, or eMLC NAND, is the happy medium that bridges the gap in price and lifespan between SLC and MLC.

Then there’s size. It’s common to see enterprise SSDs range from 200-GB and 400-GB models all the way up to 800-GB models. Capacity, NAND flash type, IOPs, read/write performance are some of things you need to consider.

Watch this VIDEO

On-Premise vs. Cloud: How Do You Choose?

Many applications have emerged as cloud-based applications including email, office applications, CRM, storage and backup. But which parts of your customers’ IT environment are right to move off-premise and which should be kept close to home?

It’s a tough call and factors that come into play include financial considerations (OPEX versus CAPEX), security, and business continuity – performance!

Here’s where SSDs make a lot of sense for enterprise data centers and on-remise Big Data applications. They feed I/O starved applications for outstanding performance, high endurance and low latency.

Watch this VIDEO

Intel, Latest Technology

Customized Tablets Just Fit Better

An off-the-rack suit may fit fine, but imagine the difference if a master-tailor made you a custom suit. You just took the leap from clothing to couture. So what does that have to do with tablet PCs?

I don’t think anyone would argue that a tablet is a fine piece of technology, but in the hands of a “master-tailor” (solution provider), that device can fit its user just as spectacularly as a hand-made suit.

Consider the difference a tailored device can make. By understanding the work that users need to get done and the way in which devices will be deployed, manufacturers are able to build customizable tablets that anticipate and adapt to the environments in which they will operate. When you add software and peripherals that are fully compatible with x86 architecture and apps, integration with existing infrastructures becomes seamless.

Imagine how much happier your customers are when the solution is a custom fit: A sales associate can swipe a credit card through an attached POS reader on his tablet without ever leaving the customer’s side; a nurse can consult a patient’s records to avoid potentially harmful drug interactions, then sanitize the device before she moves to the next patient; an auto mechanic can run engine diagnostics, check for parts or submit an insurance claim right there in the garage. It’s like adding the perfect silk tie and pocket-square to complete the look.

Herein lies your opportunity. The future is customization in everything from phones to ads.  When you identify the needs, not just the wants, of your clients, and build customized solutions instead of good enough, off-the-rack pieces, you’re adding value that customers will happily pay for.

And by the way, Enterprise and SMB customers alike are adopting tablets at amazing rates. Someone is going to capitalize on this opportunity. Why not you?

Delivering this kind of superior product and service is easier than you may think.  Intel-based tablets with support for Windows, Linux, and Android form the basis for business-ready, flexible platforms that allow you to customize with software and peripherals to create solutions that intelligently adapt to the perfect fit.

We at Intel are excited to be working with innovative partners who are expertly tailoring solutions for their customers’ vertical segments and workflows. Take a look at some partners who can help you get jumpstarted selling customized tablet solutions in vertical markets like retail, hospitality, law enforcement, field service, gaming, healthcare, and others.

Look under the hood of GammaTech Durabook

TabletKiosk serves up appetizing POS solutions  

Mobile workforces run with Motion Computing

The Intel ecosystem is rich with channel-friendly partners like these who can help you capture the growth opportunity inherent in the customizable tablet PC arena. From durable, to rough-and-ready, ruggedized devices in various sizes and configurations, these partners can build and customize complete solutions for you to resell, or you can start with a building block and add your own software, applications, and services.

Either way, with customizable Intel-based tablets, you’ll be outfitting your customers with the devices, integrated solutions, and services uniquely tailored to their needs and wants.

Intel, Latest Technology

What’s next? World 2.0, a programmable smart world, that’s what.

world2.0

This imaginative "what might be" post requires a disclaimer.  So to be clear to my readers, these thoughts are my own, not coming from Intel.  This is purely my speculation, my phrasing, and imagination of what may be in front of us. I do not work in the micro-controller, cloud computing space, or have knowledge of future products or technology in these areas.

Working in tech and with developers I often get asked "so, Bob, what's the next big thing?". Being an imaginative guy I often think about it, and I do have personal thoughts.  My term for the next big thing is "World 2.0".  World 2.0 is my own term, borrowed from the phase "Web 2.0" when the web shifted from a publishing medium to an interactive medium.  World 2.0 is also related to what Intel calls this the "Internet of Things" but I use the term World 2.0 because like Web 2.0 it signifies a fundamental shift.  For me it's a shift to a physical world that is programmable and interactive just as virtual worlds are and visa versa.  For example in a virtual world you can program every aspect of the world and how it behaves and interacts with virtual characters. In video games for example rarely do you see a character pull a key out of his or her pocket to open a door.  Also you rarely see a character look for a light switch to turn on a light.  Reason is these are things that can be programmed to happen as the developer wishes based on rules and a story line controlled in the code.  We are soon moving to a real physical world that can be programmed in the same way.  And this goes far beyond smart lights and doors, but these are simple examples that will soon pervasively change.

World 2.0 Chapter 1: DIY Internet of Things 
Many things have happened recently that will allow this to happen, more than we've understood before.  Home automation, and control systems have been around forever.  We could always program lights and doors, but at a huge cost and they were never terribly intelligent.  However a shift happened, not unlike the shift 6-7 years ago that shifted the mobile space.  This shift involves a pervasive internet, mobile computing, cloud computing, inexpensive sensors, micro-controllers and 3D printers.  What we are seeing now is that virtually and kind of smart device can be imagined, then rapidly prototyped with intelligent sensors, interconnected via the cloud, and brought to market by almost anyone.  Go to any hobby store and look at what you can buy and connect together to build something that can see you, connect to the Internet and be controlled by your smart phone.  You have access to light sensors, infrared sensors, video cameras, NFC sensors, USB connectors  that can connect to servos and motors all controlled by an inexpensive microcontroller.  You can model a physical device using free software over the web then print out, and iterate on that device time and again.

What this means is we are now about to step into a new era.  We've spent the last 20 years where anyone with a PC and an inclination to do something cool could program the web or an app on your smartphone.  We can now start programming the physical world just about as easy as any home DIY home or technical project.  It is as accessible and extensible as the web has been, however the monetization possibilities may equal or far exceed that of the web or app space. We've all started to hear of smart wearable tech from smart bracelets, watches and glasses.  As things we wear get smarter there's a lot of opportunity for inventive developers.  But that is thinking small.  Lets look at even less sexy things that have huge opportunity.  For example imagine creating a better way to enter your house or apartment because your phone or watch is paired with your front door.  How many front doors are there that would need to be changed, and upgraded. Great potential in that one small area of Internet of Things.

To further illustrate let me take a bad idea (cause I don't want to give the awesome ideas away); the smart toothbrush. You could put a micro-controller with WiFi in the base of a toothbrush, then wire in motion and infrared sensors in the head of the brush.  The brush could gather data and send to an app or web server.  With some smart software you can analyze how well your brush teeth.  What areas you miss, what good or bad habits you have, and alerts to your phone should you miss a brushing.  That data could give you, your dentist or insurance company info to improve your dental care.  That is entirely possible and could be invented by just about anybody with a bit of training and prototyped using a 3D printer.

A smart toothbrush is silly, but there are countless opportunities to create newer, smarter things that we interact with.  Many could be patented, licensed and be monetized with a bit of personal ingenuity.  With standards on WiFi, NFC, USB, REST services, and microcontrollers we have an infrastructure to create and connect so many things, never possible before.  The possibility to have so many connected smart things brings us to the next era of World 2.0

World 2.0 Chapter 2: Ubiquitous Sensing
The next phase beyond DIY smart things is making the Internet of Things more aware of us so we can more easily control the world without having to do anything more than waving our hand, or nodding our head. At Intel we call this Perceptual Computing.  However if you look at all of these technologies (Kinect, Leap Motion or Intel's Perceptual Computing) they require a computer, camera or sensor looking at you from a fairly fixed point.  A fixed camera is great for what we need now, however like the PDA was for the smartphone it's a necessary bridge to something much more awesome.

But let's back track a bit.  If we understand Perceptual Computing  (PerC for short) we can understand how the DIY Internet of Things gets us to fully realize it.   PerC is about making the computing systems more aware of us, where we are in space and what we are doing so that the computing systems can interpret our motions, our speech and our behaviors to comprehend what we needing of the system, just as other humans do.  In other words the world around us needs to sense us.  The world, or at least the spaces we do computing, need to have a nervous system to see, hear and process us.  If you've even seen "Star Trek The Next Generation", we see that the computer is able to always sense the crew allowing them to activate and access things by voice or proximity.  The sensing is ubiquitous allowing an interactive computer to be omnipresent.

Intel is starting to solve the fixed sensor PerC problem with new integrated cameras in Ultrabooks and 2in1 computers in 2014 .  However true ubiquity requires that your body, hand, head and voice be sensed as you move about.  But if you recall, going back to the DIY phase we will have world were doors, wearables, light bulbs, cars, appliances, table tops, TVs and potentially toothbrushes will have sensors and some interconnectivity. We already explained how things around us have the ability to sense us independently.  Now if you aggregate of the data from wearables and smart things around you, then process in real time, we now have the ability to very accurately sense you in space, at almost any position and in context to what you are doing, in just about any place you compute.

This is ubiquitous sensing. Security concerns aside, this brings a new era of things you've only seen in sci/fi movies.  When Tony Stark has a problem to solve, and he interacts with a computer hologram.  His hands, his body, his head and his speech are being sensed and processed so he can simply talk, waves his arms and grab virtual objects in space. That freedom to interact with a virtual system as you would real physical items, is what becomes possible.  While the movies focused on manipulating virtual objects, if we've connected our Internet of Things, all of those things can be controlled in concert.  Potentially the color of your walls, the pattern in your carpet, the light coming thru your windows are as easily changed or set by just talking or waving your arms.  At this point the lines between virtual and real are broken down and blurred.  This is World 2.0 where you can control virtual objects as if they were real and you can program and control the physical objects as if it they were virtual.

Develop & Invent our Future
It's a big world of "things" out there to program, make smart and connect.  The opportunity is immense and just as we could never have predicted the capabilities and experiences brought to the web or to our smartphones and tablets, we can't easily predict what "things" will be created by the ingenious, inventive and splendid minds of developers.  My advice for developers on "what's next"; learn about micro-controllers, sensors, cloud processing, encrypting/protecting data, and 3D printing then start inventing the future.  It's going to be awesome

Intel, Latest Technology

Mobile Development in 2013: A Look Back

2013 was a good year for mobile app developers. Revenues from app development in major app stores reached historical levels, with Android apps doing especially well in Asian markets.  Shopping apps were wildly successful with consumers, especially during the ramp-up to the holiday shopping season.  Geo-targeted app experiences – ads, push notifications, and location services – made great inroads with app users, even as privacy issues continued to hang overhead. These trends and more were the focus for mobile app development in 2013.

Monetization

Making money with app development is obviously a strong focus for mobile developers. In 2013, the rise of the freemium business model, with in-app purchases taking the place of an upfront app purchase, became the most successful monetization model for developers in both the Apple Store and Google Play:

“The Freemium Business Model – free apps with in-app purchases – makes up the largest revenue share in the Apple App Store. Our analysis showed that this revenue share even increased over the year. While the Freemium revenue share was at 77 percent in January, it grew to 92 percent in November based on globally aggregated data for the Apple App Store. The other business models, paid apps without in-app purchases and paid apps with in-app purchases, made each only 4 percent of the revenue in November 2013. The same trend holds true for Google Play.” – 2013 Year in Review, Distimo.com

The Apple Store continued to outpace Google Play in terms of sheer revenue, with Apple leading with 63 percent to 37 in November 2013. However, money is still not the number one factor for developers choosing to make apps for a living, and the freemium model is not necessarily the one that’s going to take all the chips and go home. According to a survey of over 6000 mobile developers from VisionMobile, monetization is just part of the greater equation:

“At $5,200 per developer per month on average, iOS continues to be the most revenue-generating platform for developers, ahead of Android developer monthly revenues by a margin of 10%.  Our research of 6,000+ mobile developers shows that there is no single revenue model that is dominant across all platforms. On Windows Phone, developers have a strong preference towards in-app advertising (43%) and pay-per download (40%). BlackBerry 10 developers have a strong preference towards pay-per download (47%). The picture is much more balanced on Android, iOS and HTML5, with no revenue model dominating to the extent observed on Windows Phone or BlackBerry 10. Contrary to popular perception, money is not the only motivator for mobile app developers - in fact, far from it. Revenues, in some form or other, are the goal for just 50% of mobile developers.” – 2013 State of the Developer Nation

This finding coincides with a  recent survey on developer economics put together by analytics firm VisionMobile, which polled 6000 respondents from 115 different countries on their motivations, challenges, and future plans for app development. The results give some intriguing insights into what are the prime motivating factors behind what developers do; namely, a sense of achievement and not money is the main motivating factor in software development (of course, a paycheck is always appreciated). . Creativity and a sense of achievement are what make the difference for 53% of developers, while the most important goal for 33% of those surveyed is simply gaining knowledge, having fun, or making strides towards self-improvement.

Geography and form factors

The app ecosystem continues to push through to wider global markets, with apps finding greater adaptation through both the major app stores as well as country-specific marketplaces.  The Asian market in particular saw exponential growth in 2013, with the freemium model making up most of the purchased app revenue:

  • “The top 10 countries in terms of mobile app revenue from the Apple App Store and Google Play are:1) United States 2) Japan 3) South Korea 4) United Kingdom 5) China 6) Australia 7) Germany) 8 Canada 9) France 10) Russia
  • The three countries with the highest market growth in 2013 compared to 2012 are: South Korea, Japan, and China.
  • 2013 showed an increasing trend towards the freemium business model, while paid apps made up a smaller portion of mobile app revenue.” - 2013 Year in Review, Distimo.com

Cheaper devices with more computing power made for greater availability in global markets, which contributed greatly to app stores’ bottom lines. A report from the International Data Corp states that the average price of smartphones this year was $337, down from $387 in 2012. By 2017, the IDC predicts that the average cost of a smartphone will be down to $265 or less.  Internet access also is cheaper, with fast speeds the norm in most Asian countries:

  • 44% of Android users in China use Wi-Fi for their access to the Internet, especially for video. 31% get their information from 2G networks, and 23% use 3G.
  • App downloads for Chinese Android device owners are growing exponentially: the average user downloaded 10.5 apps per month in Q3 2013; the previous year, it was 8.2 apps monthly
  • 15% of Android users in China install at least one new app a day vs. 11% in Q3 2012
  • 59%  use app stores to download their apps, while 13% use online app searches and 21% use their PCs to sideload apps onto their Android devices

Notable trends in app development

The top downloaded app of the year for both major app stores and in all global markets was King.com’s Candy Crush Saga, proving once again that games are pretty much the horse to bet on with users. More trends:

  • Apps were explored more quickly than ever before in 2013.
  • We identified apps that reached over one million downloads in only a couple days after release, e.g. Despicable Me: Minion Rush and Temple Run 2.
  • For some apps, the download volumes from the Amazon Appstore started to compete with download volumes in established app stores like the Apple App Store and Google Play.
  • The most revenue generating app of 2013 was Supercell’s Clash of Clans, making Supercell the top grossing publisher of 2013 in the Apple App Store.
  • None of newly released apps of 2013 reached a top 10 position in the yearly grossing charts in the Apple App Store. In contrast, four out of the top 10 grossing apps on Google Play were released in 2013.
  • Minecraft – Pocket Edition by Mojang was the only paid app in the top grossing charts of the Apple App Store.

Shopping apps proved to be a great boon to both online and brick and mortar retailers, especially in the 2013 holiday shopping season, specifically, Cyber Monday (traditionally this is the Monday after Thanksgiving focusing on online shopping only). According to Adobe’s Digital Index 2013 online shopping data for Cyber Monday, online sales for the day increased by 16 percent year-over-year (YoY) to $2.29 billion. A record 18.3 percent of sales came from mobile devices, an increase of 80 percent year over year. Tablets generated the majority of mobile driven sales at 12.7 percent of total online sales.

Other trends that impacted mobile app development in 2013:

  • Geo-targeted push notifications: Users are connected to the businesses and organizations they choose to download apps from
  • Geo-targeted advertising: Contextual advertising takes on a whole new personal touch with geographically targeted advertising within apps
  • Dealing with bounce rates: Mobile users are notoriously inpatient and not willing to fill out tedious forms. Mobile app developers are becoming more mindful of that, creating “transactional apps” that automatically fill out geographically targeted information
  • NFC: Near field communication is starting to become a must-have for app users, even though it is still just in the beginning stages
  • Battery power: App users are starting to become more savvy with the apps they download, and if an app is too much of a burden on a smartphone battery, it gets dumped quickly
  • Business and productivity apps: Users want apps that help them accomplish something, and BYOD apps continue to gain important ground

Along with games social networking apps continue to be the most popular apps in app stores with no sign of slowing down. Mobile app development includes social integration now as a matter of course; it’s a necessary feature that users expect, especially integration with Facebook:

  • More app developers integrate with Facebook than any other major social media provider (66% – Twitter is a distant second at 52.7%);
  • This lead can’t be chalked up solely to Facebook’s authentication service. When asked how they were managing user authentication inside their apps, most developers reported relying on traditional web protocols (38.7%) or specific methods such as SAML or OAuth (21%). Social media services such as Facebook were third at 19.1%.
  • Facebook’s switch from HTML5 to native apps and their investment in mobile-friendly APIs such as Open Graph were ranked one and two respectively by developers when asked to judge the company’s smartest mobile bets.

Design in app development has always been of paramount importance, but in 2013 it took center stage as more users are putting a premium on well-designed apps that make their experience even more enjoyable.  Clean navigation, a simple yet powerful user interface, and powerful features are what made 2013 apps stand out in the marketplace. Content remains the most important design factor:

“Another app design trend that has been dominating the mobile app design scenario in 2013 is – more emphasis for clear and complementary CONTENT, rather than factors like user or interaction. More recently, popular mobile apps like Facebook, Vine and Pinterest have feature streamlined grid layouts focused on a single image or other posted content. The usability factor of such a design layout is that it pulls the posts into one column allowing users to swiftly scroll through hundreds of posts at a time.” – Apps-World, whitepaper (PDF)

Platforms and OS

Android and HTML5 are the standouts in 2013, with a  report from VisionMobile showing research from 6000+ developers that Android leads at 71% of developers using that platform, with iOS following at 56%. HTML5 gained great ground in 2013, with 52% of the developers surveyed reporting that they used HTML5 for development:

“The largest share (38%) of HTML5 developers develop mobile websites with another 23% developing mobile apps, i.e. incorporating offline functionality and deeper browser integration. Hybrid apps, such as those produced by PhoneGap, account for 27% of HTML5 mobile developers. A minority of 7% of HTML5 mobile developers use platforms exposing native APIs via JavaScript, such as Firefox OS, BlackBerry 10 and Windows 8. Last, but not least, 5% of

HTML5 mobile developers use a Javascript-to-native converter tool like Appcelerator.” – 2013 State of the Developer Nation

Drilling down further, it’s clear that successful app development can’t be focused on just one platform, however. Different games run on different platforms, operating systems, device models, different screen adaptations, aspect ratios, even different versions of the same platform. Developing games for all the different platforms out there is (to say the least) a time-consuming process. Developers have to optimize game projects for each device, taking the time to test everything so there aren’t problems down the road.  While it’s certainly fantastic that we have a wide variety of devices available to us as consumers, for developers, making games that will function on the majority of the devices on the market is becoming an increasingly more difficult task. Developers have to prioritize according to monetization, access, and features which platform they will choose to create their next app for:

“Our data shows that 84% of mobile developers are using iOS, Android or HTML5 (mobile) as their primary platform. Our research indicated developers prefer iOS (59%) over Android (49%) as their primary platform. Whereas Android has 4x times more devices shipping and significant lead in Mobile Developer Mindshare, it lags behind iOS in terms of Android developers using it as their lead platform. Platform priorities also depend on the level of experience. Developers who are fresh to mobile have a much stronger preference towards Android, with almost twice as many new mobile developers preferring Android (40%) to iOS (21%).” - 2013 State of the Developer Nation

Trends in 2013

Trends for mobile app development in 2013 set the stage for what we can expect in 2014. What are your predictions? What are your opinions on mobile app development and where it went in 2013? Share your thoughts with us in the comments.