Advantages of Native Mobile App Development (Part 1)

A Perennial Debate

The debate about the advantages and disadvantages of differing approaches to mobile device application development is one without resolution. Each approach – native, web or hybrid – has specific pros and cons that determine its fit with an organization’s resources and the goals for a specific app.

With regard to portability across multiple platforms, this debate often comes down in favor of web-based apps that can theoretically be written once and run on both mobile platform leaders, iOS and Android, with minimal modification. However, with the advent of highly efficient cross-platform tools, the possibility of a wider market for write-once native apps is now a reality.

Whether or not the app is to be a workforce productivity app or for general public consumption, however, it is wise to consider key advantages of developing it natively versus taking a lowest-common-denominator path.

What are Native Applications?

It is generally understood that for a mobile application to be considered a native app that it executes directly within the OS for which it was written. In the vast majority of smartphone apps that would be either iOS or Android. If the programmer is not using a cross-platform kit, then he or she develops the app using a native programming language directly plus development tools and user interface guidelines developed specifically for the platform. In the case of Apple products, the languages are Objective-C or Swift. For Android, the language would be Java.

Another definition is that a native mobile app is any directly downloadable application package that installs and runs solely on the platform for which it is intended. In the case of iOS that would be a .APP file and for Android it would be a .APK file. Using this definition based on the end product of app development, there is a great deal more leeway available to developers in terms of which programming languages, development tools and even UI guidelines that they can use to create a native app.

There is one caveat, however, which is that to truly be considered native, any app must have full access to all the capabilities of the native hardware platform. This capability comes automatically in the case of writing directly to iOS or Android via their APIs, but may vary if a development environment is utilizing abstraction layers to natively run code.

Native App Advantages

Native mobile applications have three fundamental advantages over web-based apps:

  • Since the applications are built utilizing the native platform interface components and adhere to platform UI guidelines, they appear as natural extensions of the platform, which provides a visually seamless user experience. Since UI guidelines also include conventions regarding app behavior, the user’s interactions and manipulation of the app is smooth and easy to comprehend. For instance, a platform’s specific, native hand gestures will work as expected across all the device’s native apps, which would not necessarily be the case for a web-based app.
  • Because native apps, by definition, must have full access to the platform APIs, they have direct access to all platform-specific capabilities including embedded hardware, peripherals and specialized UI libraries or components. Native apps can, for instance, directly access a smartphone’s GPS, USB, cameras and networking hardware. Examples of UI components available for native applications are iBeacons and Fragments for iOS and Android, respectively.
  • Native applications written with platform-standard languages and toolkits achieve the highest possible runtime performance because they are compiled to run directly on the hardware without intervening abstraction layers. Native applications that are developed with non-standard languages and tools but use a native abstraction layer will run as fast or nearly as fast as a standard native app depending on how efficient is the abstraction layer upon which it was built. Even non-standard native apps will almost always exceed web-based app performance, because the latter must execute within a web browser that adds another level of execution indirection.

From a user’s point of view, native applications generally appear more responsive, reliable and behave in accordance with other native apps on the device. Furthermore, more memory and hardware-acceleration are available to native applications. They also have the potential to communicate with other native apps installed on the device if programmed to do so.

Native Application Frameworks

iOS

Development of mobile applications for Apple’s iOS consists of using Objective-C or Swift or both languages in combination to program the application. Applications are written within Apple’s proprietary integrated development environment named Xcode, which includes the Swift and Objective-C compilers, 4,000 iOS SDKs, an interface builder, iOS simulator, testing platform and hardware instrumentation. Apple also supplies specific UI guidelines.

Android

The Android development environment is Google’s Android Studio. It is built upon the IntelliJ IDE. Android Studio is itself cross-platform as it runs on Windows, Mac OS X and Linux. It replaces Google’s Eclipse IDE as the primary platform for native Android apps.

It includes a live coding and real-time app rendering capability, trouble-shooting and performance tools plus a rich layout editor for UI development. All development is done with Java, which is considered by most programmers to be easier to comprehend than Objective-C, but on par with Swift. Android Studio performs regular background compilation, which results in faster defect detection compared to Xcode, which only builds a project by explicit command.

Read Part 2 of our article on the Advantages of Native Mobile App Development Thursday.

Amazon Launches AWS Mobile Hub

Last autumn, Amazon announced a new service dashboard in their ever-expanding universe of Amazon Web Services that specifically targets mobile app development called the AWS Mobile Hub. This will significantly streamline the processes of building, testing and monitoring mobile apps built for both iOS and Android using a wide variety of development and testing tools.

Everything a mobile app developer needs from back-end cloud services is presented within a single console, which enables access to and configuration of AWS options, client SDKs, integration code, mobile analytics and notifications via Amazon SNS alerts. Taken together, AWS Mobile Hub reduces the overhead to developers of configuring their app’s back-end services, which allows them to concentrate on delivering new functionality to their clients.

AWS Mobile Hub Project

Every AWS Mobile Hub-based app starts by defining a project for that app, which is essentially a collection of features and services commonly used in mobile applications. When creating a Mobile Hub project, developers can leverage built-in authentication services, cloud storage, advanced app content delivery, mobile analytics and shared cloud logic. The necessary SDKs, libraries and initialization code are downloaded after configuring the app’s build in Mobile Hub.

Mobile Hub also enables developers to provision and configure the AWS services each app requires such as Amazon DynamoDB or Amazon EC2 via service consoles. All the resources acquired via AWS Mobile Hub are also accessible for advanced management via those separate service consoles directly from the Mobile Hub dashboard. Access to project resources and consoles can be fine-tuned for individual project team members as the project organization requires.

User Authentication

App user authentication is derived from social or custom logins using Amazon Cognito Identity service, which populates the app screen with the identity providers developers have chosen to display. Users are granted limited credentials on a temporary basis to AWS resources used by the app.

Cloud Data Storage

Each AWS Mobile Hub project has access to an S3 bucket that stores user data in both public and private folders. Access to folders is limited according to the authentication level of app users. A sample browser apps is provided from which a customized file explorer can be created.

Application Content Delivery

Application audio, images and videos are stored using Amazon’s S3 with the ability to cache them locally. Additionally, Amazon’s CloudFront service can be utilized to speed up access to .html, .css, .php, and media files using edge server technology.

Mobile Analytics

Mobile Hub accesses Amazon Mobile Analytics to collect usage and revenue statistics from built-in or customized events as defined by the developer through the Mobile Hub console. It tracks essential trends such as the ratio of new to recurring visitors, user retention, app revenue and in-app events that are vital to making data-driven marketing and monetization decisions.

Shared Cloud Logic

The ability to place mobile application logic in the cloud means your other mobile apps can reuse common functionality via the AWS Lambda API, which significantly reduces development and test time. Each Mobile Hub app’s cloud-based functionality can be separately modified after the mobile app has been submitted to an app store without having to re-build, test and re-qualify the app. The shared code can be written in JavaScript, Java or Python and shared across both iOS and Android apps. This feature substantially simplifies cross-platform development and rapid TTM feature updates.

App Testing with Mobile Hub

From the Mobile Hub Project console, developers and testers have direct access to AWS Device Farm, which provides Android, iOS, Fire OS and other web apps access to physical devices such as smartphones and tablets hosted on AWS.

Developers can utilize both built-in, script-less compatibility tests or design their own custom scripts using Xamarin, Titanium, Unity, PhoneGap or just about any other test framework. AWS Device Farm works with test tools such as Appium Java JUnit, Appium Java TestNG, Appium Python, Calabash, UI Automator and UI Automation among others.

AWS Mobile Hub is a new integration console that provides access to the entire AWS service suite, which puts mobile app developers on a fast track to app delivery. AWS Mobile Hub reduces cloud-based back-end configuration overhead while granting access to leading edge, competitive cloud technologies. Mobile Hub supports the leading mobile OSs, development and testing frameworks and tools. Furthermore, it enables agile feature updates even after app release via shared cloud functionality.

The Secret of Great Android App Design

images-2 The Secret of Great Android App Design

With hundreds of new apps rolling on the market every day, the industry is getting saturated in every niche you can imagine. To set one’s product apart in a tremendously competitive field like this, the app design plays a major part. Let us look at how android apps can be designed better by keeping a few simple things in mind.

Tips for Designing Great Android Apps

The mobile app industry is a place where one does judge a book by its cover. Also, as is the case with any good design example, it is not enough for the product to be pretty, but the fact is that good design must be a testament to good usability. Over the years, there have been many design philosophies that have begotten classic solutions to age old problems. Ever since the advent of smart mobile technology, a gauntlet has been thrown by the Apple designers to create products that are both visually stunning and end up making life easier for the user. But things are comparatively easier for iOS designers. Their work is cut out with respect to the hardware limitations and a design philosophy. An iOS designer’s canvas is limited to either the iPhone or the iPad and their few variants. On the other hand, an android app designer has to deal with creating an interface that must run seamlessly on a plethora of devices, large and small, with unique screen specifications, touch interfaces and resolutions.

Thus, it shouldn’t be surprising that for a long time, Android apps were considered to be visually inferior in front of the classy, sophisticated design touch that Apple tended to provide through its software. But times are changing fast. With 4.0 Ice-cream Sandwich, Android laid down specific design guidelines for its developers for the first time, while introducing the beautiful, modern Holo interface. And with KitKat, its latest release, Android is seen taking giant steps towards providing a beautiful, complete and visually satisfying user experience. The secret to success in the Android app market is to create an app that speaks to the aesthetic of your market, while making sure that the design compliments the usability of the product. Here are some guidelines that one can follow to make a good Android App design.

Aesthetics

One look at the comprehensive design guidelines that Android provides on their website tells you that what is expected is building ‘visually compelling apps that look great on any device.’ With each of its new releases, Android is advocating a modern, subtle aesthetic style with prominent blues and muted colours. The idea is to promote a certain ease of access to the user by not overwhelming them with graphical information, while at the same time not being drab and dull. Android promotes the use of user interactive animation, seamless transition screens and to-the-point content. While designing your app, make sure that its aesthetics are planned in a way that the user will be engaged for a long term. This means making it coherent with the OS aesthetic, while subtly putting your own mark on the screen.

Scaling on Multiple Devices

This is where Android design drastically changes direction with respect to Apple’s. Since an app, once in the market, is presumably downloaded on a plethora of devices with multitudes of screen sizes and qualities, care must be taken that the app has a comfortable usability irrespective of the screen size. The portrait to landscape transitioning must be smooth. This means that Android designers cannot have the liberty to play with every pixel, knowing where it is going to go on the screen like Apple designers. But it also means that the designs will have to be more robust and resilient to change. Android advises designers to be flexible, while making maximum use of the screen space with the larger devices, and substitute that with multiple screens for smaller ones.

Content

Android advises developers and designers to keep the content short and to-the-point, so as to increase the user’s attention span. So, instead of asking, ‘Would you like to sign into Google?’, one could simply ask – ‘Get Google?’.  This informal approach makes sure that your user attention is not diverted from the more important details of the service. Keep the content concise, simple and friendly. Make sure that the user specific goals come before the imperative action in the string. So, instead of saying ‘Restart your device to run the application.’, use the more result oriented ‘To run your application, restart the device.’

User Experience

Many times, we take our design problems for granted because we are conditioned to use a product as it is. Finding design problems comes before finding design solutions. Try to make the user experience interactive. Let the app have subtle visual responses to touch. Essentially, let the user know that the apo is listening to them. Small animations, clever use of transition screens, multi-pane layouts and a handy widget won’t go to waste.

Your Brand Recognition

You have to create a place for your own brand in a market filled with competitors. Study the rival applications and the design problems while using them. Create a simple, visually meaningful app logo that can be instantly recognizable. Even your app name matters a lot when it comes to success in the market. What users want along with a good operating experience is the feeling of using a cool app on their phone – a tasteful design that they can flaunt. Do not forget this x-factor while creating your app’s look.

Get in touch with OptimusMobility to know more about great app design. Our amazing designers are always happy to help!

Developer-Focused Changes Coming in Android 6.0 Marshmallow

Available to run on Nexus 5, 6, 9 and Player, the SDK for Android 6.0 Marshmallow is ready for download. Although Android M is an incremental release, it holds significant changes for users and developers across SDK functionalities.

App Linking

Android M apps can offer deeper linking between apps and web domains for direct user-level transitions. Associations are specified in the intent filter, verification uses a server-side JSON file while the transition itself is coded in an app activity.

App Auto Backup

Full, automatic data backup and restore is now available for users with Google accounts. All or part of the app’s data including databases, shared preferences and the application’s private directory can be duplicated. There is a 25MB limit per app, but that does not count against the user’s quota. Developers need only update targetSdkVersion to 23 to enable this feature.

Fingerprints and Passwords

With Android M, developers can add fingerprint scanning for any platform with an appropriate device using the new FingerprintManager class. Apps using this feature must authenticate independently of other apps. Apps can check the interval since the last user authentication on a device-unlocking mechanism, such as a screen-lock password. This feature frees developers from implementing separate authentication interfaces and eliminates app-specific passwords.

Direct Share

Developers can define direct share targets within their apps to launch specific activities via new APIs. These allow users to share content, e.g. contact info, to other apps by launching activities in those apps. Direct sharing by users is facilitated by exposing the direct share targets in a Share menu on the platform.

Voice Interactions

A new voice interaction API is included in Android Marshmallow that works alongside Voice Actions to enable conversational interaction between apps and users. Most interactions are initiated by a voice action from the user, but can be accomplished by an app sending an intent to start voice interaction. Apps then prompt users to confirm interactions or continue with the conversation.

Support for Android Pay

Android Pay is now fully integrated with Android M. Users store payment information on the platform, which is securely available to developer apps. These apps are able to couple with store or payment provider apps to permit users to utilize NFC terminals for payment processing. Android M also supports third-parties ample freedom with regard to customized presentation and brand integration. Google announced that over 700,000 merchants and over a thousand apps are already signed up.

Chrome Custom Tabs

Custom tabs in Android M allow apps to overlay a customized Chrome window on the currently active app in lieu of launching a full instantiation of Chrome. This softens the boundary between app and web experience for users. Since Android M can pre-fetch the tab content, it feels faster too. Each tab includes overflow menu options. Apps control the overall look and feel while taking full advantage of Chrome capabilities.

App Permissions

With Marshmallow, app permission moves to an on-demand model, which significantly lowers users’ cognitive load, while avoiding or deferring users’ negative impression that an app has too many permissions. At runtime, when an app requires permissions, it displays a one-time prompt asking the user to grant permission. Apps that do not adopt the new permissions model, default to the install-time permissions model.

Apps declare all potential permissions in the app manifest. Permissions designated as PROTECTION_NORMAL are auto-granted at install time. Unfortunately, apps must poll the current state of its permissions at runtime, since apps are not notified when a user turns off one or more of them.

Google Now

Context awareness, answers and assistance in taking action have all been improved within Google Now on Android M. Google Now graphs over one billion entities including 100 million different places. Users access the virtual assistant within an app by holding the home button, an action known as Google Now on Tap. Thus, the assistant might display a list of restaurants given the context of a text chat about where to go for lunch. App access is via the new AssistContent class and Google is rolling out a Now on Tap pilot program with 100 apps.

App Notifications

Apps can take advantage of a number of new alarms:

  • A new filter, INTERRUPTION_FILTER_ALARMS, permits alarms to penetrate the do not disturb mode.
  • A new category value, CATEGORY_REMINDER, distinguishes user-scheduled alarms from CATEGORY_EVENT and CATEGORY_ALARM reminders.
  • A new Icon class can attach to notifications and the addAction() method now accepts Icon objects.
  • A new method, getActiveNotifications(), lets apps enumerate currently active notifications.

Android for Work

Many new APIs and controls in Android M have been created to specifically support corporate, single-use devices and enterprise workflows. These include controls for keyguards, status bars, safe boots, always-on screens, auto-acceptance of system updates and runtime permissions management.

Device provisioning and unprovisioning without user intervention is supported now in the PackageInstaller APIs, which permits one-touch provisioning of kiosks or other devices without a Google account. Managed app access to certificates is possible now without user intervention and certificate installation can be delegated to third-party apps.

 

Despite appearing to be just an incremental release, Android 6.0 M includes meaningful advances for both users and developers in the areas of security, contextual awareness, improved user interaction and experience plus new automation capabilities for enterprise administrators. Although deployment is currently limited to Nexus devices, developers can get a head start on Marshmallow app development by downloading the Android M Developer Preview today.

Developer-Focused Changes Coming in Apple iOS 9.0

Apple’s feature-rich beta release of iOS 9 arrives with many long-awaited developer-focused features. These include big improvements for app multitasking, streamlined game creation, improved security, easier cross-platform app delivery, improved app search and much more.

iPad Multitasking

Three new features allow users to view multiple apps at once: Slide Over, Split View and Picture in Picture.

Slide Over and Split View let users display a primary and secondary app together. In Slide Over, the secondary app overlays the primary app and in Split View they share the screen. Split View allows simultaneous interaction, whereas Slide Over does not. Slide Over runs on iPad Air2, iPad Air, iPad mini 3 and iPad mini 2, but Split View only works on iPad Air2.

Picture in Picture allows users to run a video on top of another app. Developers wanting to add PiP use AVKit or AV Foundation APIs. The video playback class in Media Player framework is deprecated.

App Search

Search in iOS 9 features Siri combined with deep links, which allows users to search within developer-indexed apps. Users can reach indexed app content for uninstalled apps via Spotlight, Safari search, Handoff or Siri suggestions. Content can be provided through both the iOS 9 private on-device index and Apple’s server-side index.

Gaming Improvements

iOS 9 lets game developers harness more GPU power and improve game graphics and audio:

  • The GameplayKit framework has new randomization tools plus entity-components for improved reusability. It adds state machines, common gameplay algorithms, high-level specification of movement behaviors and rule systems to support data-driven logic, fuzzy reasoning and emergent behavior.
  • Model I/O enables importing scene data from popular game authoring software. It assists in creating mesh, lighting and background textures, improving asset data loading to the GPU and exporting asset data to different file formats.
  • MetalKit framework provides utility functions and classes to facilitate Metal app creation.
  • The Metal Performance Shaders framework contains optimized computer and graphics shaders for Metal apps such as Gaussian blur, image histogram and Sobel edge detection.
  • The Metal, ScenekKit and SpriteKit frameworks have many new features including stencil textures, depth clamping, more pixel formats, rendering support, Xcode scene and action editors, positional audio and camera nodes for scrolling games.

App Thinning

App Thinning helps developers create optimized installations for a range of platforms. Artwork in the Asset Catalog can be tagged so that only artwork applicable to a specific platforms is delivered. Additional app content can be fetched on-demand by the app from the iTunes App Store repository. Apps can now be archived in intermediate formats that are compiled as either a 32-bit or 64-bit executable when delivered to a platform.

App Transport Security

ATS is now on by default in iOS 9, which allows apps to avoid accidental data disclosures. To prepare for transitioning to ATS, apps should immediately use HTTPS exclusively for back end communications while beginning migration to ATS. Furthermore, high-level API communication must be through TLS version 1.2.

Other New Frameworks

  • Contacts and Contacts UI Frameworks are object-oriented replacements for the Address Book and Address Book UI frameworks, respectively.
  • Watch Connectivity enables iOS apps to coordinate with corresponding Watch apps via immediate and background messaging.

Other Enhancements

  • Standard UIKit controls can be automatically flipped when in a right-to-left context and be optimized with UIView and a new UIImage method imageFlippedForRightToLeftLayoutDirection.
  • Extension Points define usage policies and provide APIs for app network extensions, Safari extensions, Index Maintenance and Audio Unit extensions.
  • New types of encryption keys and item protection options are provided in Keychain such as ACL constraints for Touch ID, invalidating keychain items when fingerprints change, an authentication context for SecItem and key generation within the secure enclave.
  • A new speech synthesis API in AV Foundation Framework adds voice identifiers in addition to language IDs.
  • CloudKit services can provide users web-based access to the same data provided by iOS 9 apps.
  • HealthKit Framework has added tracking of reproductive health and UV exposure plus support for bulk delete operations.
  • Additional Local Authentication Framework support allows apps to track fingerprint enrollment, cancel user prompts, evaluate keychain ACLs and reuse Touch ID matches.
  • Maps can now be launched into transit directions and a 3D flyover mode has been added. Additionally, improved annotations and time zones in search results are now supported by the MapKit Framework.
  • Apple Pay via the PassKit Framework now supports the use of Discover cards and store debit/credit cards. Payment networks and card issuers can add cards to Apple Pay directly from their apps.
  • For apps that wish to support direct access to related web content within the app, Safari Services Framework has added SFSafariViewController that displays a single page with a Done button.
  • UIKit Framework has added support for subviews stacking in both horizontal and vertical directions, new layout anchors, direct document modification, access to intermediate touches, text input in notifications plus many other enhancements.

 

This latest iOS 9 beta release is the biggest one to-date, which brings an abundance of enhancements and new capabilities for developers to enrich their apps and make them more accessible to users. From more efficient GPU usage to improved user-level multitasking to leaps forward for gaming apps, the newest iOS 9 additions should be welcomed with open arms by developers worldwide.

Could BYOD Work for your Enterprise?

With constant advancements in mobility and cloud the Bring Your Own Device (BYOD) technology strategy is not only for Startups anymore. According to Gartner, more than 60% of employees use a personal device for work including smartphones and tablets. When it comes to assessing the benefits and risks to a BYOD strategy there are still fairly mixed reviews. There are just as many reasons to switch to BYOD as there are to not make the switch. Here are a few things to consider when creating a BYOD strategy for your enterprise.

Costs Savings

The first and most talked about advantage of BYOD is the cost savings. Taking this route allows enterprises to phase out capital spending on hardware that will no doubt require upgrading in a few years time. The majority of employees are bringing mobile devices to the office already and are most comfortable with the device of their choosing so this can be a great advantage in saving costs on large amounts of unnecessary hardware.  

Mobile Device Management Software

For IT teams, the task of managing policy, inventory and security is becoming apparent. This is where Mobile Device Management Software (MDM) comes in. MDM allows IT teams to monitor, manage and secure employees’ devices across multiple service providers and operating systems within your enterprise. Most MDM software includes end-to-end security, which allows your enterprise’s IT team to fully manage the mobile apps, network and data used on the variety of mobile devices. Some MDM solutions also include mobile security and expense management. With the right MDM software you can reduce the security challenges that are prominent when switching to BYOD.

Security Challenges

Managing security is arguably the most complicated challenge in implementing a BYOD strategy. With the variety of devices, operating systems and mix of product versions your security policy will need to find ways to ensure everything is secured. There are a number of concerns related to security that your enterprise’s IT team will be managing including lost or stolen devices, mobile threats or internal security breaches. Before implementing a BYOD strategy conducting a full risk assessment can help your enterprise to understand where the greatest risks are and what the related cost will be.

Implementation

Before implementing your BYOD strategy there are two important aspects to consider that can have a great affect on employee adoption and overall BYOD success. First, it is important to set out the guidelines for cost sharing to avoid any misunderstanding around who is paying for what. Here you need to consider who pays for devices, service plans, software or accessories. There are a variety of structures that can be used for this. For enterprises that require precise accounting there is software available that can monitor usage and cost differentiating between personal and business use. Other cost sharing strategies can be as simple as a monthly subsidy based on a fixed fee or percentage of monthly service plans.

Finally, when setting out to start your BYOD strategy finding a set of guidelines and policies that will work for your enterprise could be the key to success. Here you will want to set out guidelines around what your enterprise considers acceptable use for business versus personal. Some policies can get as detailed as to which apps are allowed or disabling camera and video camera use while on-site. You may want to consider which devices and what type of support your enterprise’s IT team will cover. Opening your policy to any type of device could create more costs and challenges for your IT team. Also important to include are the risks, liabilities and any disclaimers that would be relevant to your enterprise. To consider here would be precautions with lost or stolen devices, personal data loss, regular backing up, ethical use and legal issues if an employee or your enterprise become involved in a lawsuit which data would be required from a device.

Although there is a lot to consider in taking on a BYOD strategy for your company, the pay off can end up being worth it. It can create a competitive advantage and increase employee satisfaction allowing employees to feel more comfortable and empowered with the technology they are using. Adopting a BYOD strategy now can also allow for ease of IT evolution as we move increasingly towards mobile and cloud technologies.

Optimus Information provides both mobile and cloud strategy services and can assist with the implementation of MDM software. For information on how our team can help your enterprise contact us today.

10 User Interface Design Fundamentals

You just finished the world’s newest killer web/mobile/desktop app and are ready to release it to the world. The program logic is airtight. The functionality saves users buckets of time. You prepare for the accolades you so richly deserve. What could go wrong?

Unfortunately, despite all the magic you created within your app, it is all for naught if users are presented with a confusing, difficult-to-use and opaque interface. Most app programmers are whiz-kids at putting together logic, data and connectivity, but fall short when it comes to UI design.

There are two reasons for that:

  1. Programmers look at their apps from the inside out. They instinctively know how to use the app because they wrote it. Users do not have that same advantage.
  2. A superb UI is a mix of diverse disciplines unlike programming such as human psychology, communications, physics and art.

Do not despair. Following the 10 UI design fundamentals below will significantly improve your UI’s looks, functionality and keep it away from user’s trash icon.

10 User Interface Design Fundamentals

1. Separate Your Wants from User Wants

Try not to subordinate user goals to your business goals. For example, a user comes to your web app to search for information. If a newsletter subscription popup is the first thing they see, you threw up a roadblock before they even get started.

2. Create an Interface Map

Good UIs impart a feeling of control to users. That feeling of control is diminished if they navigate into UI dead-ends. Mapping out all routes a user can take reveals these UI cul-de-sacs, which you then eliminate. In any case, use interface breadcrumbs so users can always retrace their steps without having to go back to square one.

3. Consistency is King

The need for consistent looks and behavior throughout your app is paramount. Keep the layout, size, style and color of buttons, widgets, fields and text the same from screen to screen. Highlight important actions or information the same way throughout the app. If image hovers are used, use them on every image. If one action produces a feedback message, you should use feedback for every action.

4. Do Not Distract Your Users

It is tempting to add some “cool” to any UI with special widgets, new icons, animations, hovers, and popups. Unless your app’s purpose is to entertain or extra bling makes your app more intuitive to use, leave it out. Unfortunately for your latent artistic ego, users find that such things distract them from solving their problem.

5. Be a Conformist

Believe it or not, most of your users spend way more time on other apps than they do on yours. Thus, as much as possible, make your UI look and behave in familiar patterns like Facebook, Twitter, WordPress, Amazon, news outlets, etc.

6. Simplify

Once you take the time to simplify your app’s UI, simplify it again. Question the purpose and layout of every element and action to evaluate if they are truly necessary to the user accomplishing their mission.

7. Never Expect Users to Figure It Out

Even though certain choices and actions may be obvious to you, the app programmer, they may be opaque to users. Guide them through actions with a few simple choices. Highlight the preferred choice. Always present an undo option so they retain control over their actions.

8. Break down Complex Actions

If you are unable to simplify long or complex action paths in the app, at least break them down into series of simpler steps to reduce cognitive overload for users. Where possible, display which step they are executing, which have been completed and which are to be completed.

9. Plan for Errors

If users are punished for erroneous actions, they are going to blame the app, not themselves. Always plan your UI such that errors are handled gracefully and can be undone easily, and, where possible, without data loss.

10. Test Your UI on Non-Programmers

Almost as bad as testing your UI on yourself is having other programmers test it for you. Always test using non-technical users who have an interest in the problem the app solves. Do not coach them beforehand or provide instructions if you want to test how truly intuitive and easy-to-use your app’s UI is.

These are basic guidelines to achieving a useful app UI. If you follow these steps and perform further research into UI design, you may be astonished by how much science is behind these and other principles. Ironically, if you have done your job correctly, users will not even notice your excellent design. The ultimate goal of a quality UI should be to make it invisible so that users only focus on solving the problems for which your app was created.

The Benefits of a Mobile-First Design Strategy

Sales of smart, mobile devices have surpassed the sales of desktop PCs. That is a done deal, and there is no looking back. Even before that watershed event, the most nimble companies began shifting their software development and online marketing and sales efforts to a mobile-first strategy. For the remaining companies, it is only a matter of when – not if – they will adopt a mobile-first outlook also.

Traditionally software has been designed first for the desktop and later ported to small form-factor devices. Forward-looking development teams now are writing their first app iteration for mobile devices. This shift in priorities carries special challenges. Product planning, content and control layouts, text and image presentation, usability and, above all, UX design take on different meanings in a mobile-first context.

Despite these significant challenges, companies that embrace a mobile-first paradigm will reap a number of benefits for their apps, their company, their partners and most of all for their customers.

Mobile-First Design Strategy

Clarifying Web Site Navigation

With so much real estate available to web apps that assume a desktop or laptop-sized screen, many developers have become complacent about what and how information is presented to visitors. This situation has created sites cluttered with extraneous text, images and navigation options. Developers simply do not have this luxury on smartphones if they are to “get to the point” without the user having to scroll around pages or deal with dropdown menus that roll off the screen edge. In the worst case, these users will look elsewhere to find solutions to their problems.

The paucity of screen space on mobiles devices should be viewed as an opportunity to hone an app’s or site’s message, and not as a disadvantage. The elimination of distractions, more crisp content and fewer but more meaningful controls raise the content value of a mobile app while increasing ease-of-use for customers.

Getting to Solutions Faster

It follows that once the presentation of apps and sites is reduced to the most meaningful components that information density increases as well. Coupled with the inherent convenience of smartphones and tablets, mobile-first developers are increasing productivity for customers and the enterprise workforce as well.

Besides boiling down the interface and first impressions, a mobile-first design of legacy apps often leads to a much needed rework of app/site navigation and a streamlining of user workflow. Complicated transactions are broken down into simpler steps that reduce user cognitive load. When this streamlining is then re-applied to bigger screen versions, those users reach solutions for which the app was written more quickly.

Discovering What Is Most Important to Your Users

Even if you are 99 percent sure your app is optimized in terms of relevant customer content, you must seek confirmation of that assumption by monitoring user activity. These measurements can be done in closed user trials or by instrumenting the app in the wild to track the steps users take to solve their problems, including navigation and workflow. If you find, for instance, that there is frequent screen scrolling, then probably the meaningful content density is too low or they are having difficulties navigating the layout. If you discover that most customers often apply Instapaper or Readability to your app/site, then you should strongly consider re-tailoring the app’s content presentation.

With a mobile-first design, the needs of mobile users rise straight to the top of design priorities. Additionally, so do the constraints of mobile platforms such as smaller screens, no physical keyboard, reduced bandwidth and variable back-end latency. Content choices come down to the critical features that users need to solve their problems and succinct business goals, which probably does not include, for example, the enterprise logo. By targeting, designing and optimizing for mobile apps first, your apps’ value increases on all devices due to this increased focus and usability.

What’s New in Android M?

Google recently previewed its newest Android release, dubbed Android M. Reviewers are calling it a return to basics instead of a splash of new eye candy. There are some significant enhancements, and thousands of much-needed bug fixes that are bringing a new level of stability and usability to the widely-used Android platform.

Now on Tap Gets Smarter

Contextual assistance has taken a big leap forward with improvements to the Now on Tap feature. From within any Google Now enabled app, you can access the Google Now virtual assistant by holding the Home button, which provides you all information relevant to user context instantly. For instance, if you receive a text message from a friend telling you about a new movie they saw, a single tap brings you reviews, actor bios, movie locations, schedules and links to any other relevant apps. Developers can add this feature via App indexing.

Android Pay

Leveraging Gingerbread’s Near Field Communications and Kitkat’s Host Card Emulation, Android Pay on Android M allows users to securely and seamlessly use their Android phone to make payments in stores or via Android Pay partner apps.

Fingerprint

Android Pay’s and 3rd-party apps’ security will be further enhanced by Android M’s fingerprint feature. Any developer has the ability to add fingerprint authorization for purchases or unlocking functions via new Android APIs. For instance, multifactor confirmation can be added by asking for a fingerprint scan. The functionality works across a large range of sensors and devices.

User Control of Permissions

Users will be able to manage individual app permissions from within their platform settings on Android M. Also, apps can make contextually-sensitive, on-demand requests for permissions when needed for such things as access to contacts, photos or location. This features lets users get up and running more quickly without app pre-configuration.

Battery Management

A new Android M feature called Doze more intelligently saves power by using the output from motion sensors to determine if a device is unattended. If it determines the device is not actively in use, it can crank back background activity to increase battery life. Developers can use high priority messages to override this behavior if they want to keep their apps’ activity level high.

Miscellaneous Improvements

A number of other features are new or have been improved:

  • Do Not Disturb is more straightforward and easier to understand
  • App collections now scroll vertically and are indexed alphabetically
  • Android M supports USB-C, which is agnostic to plug orientation
  • Users will be able to charge their device from another Android M device
  • Copy/paste functionality is easier to use with floating toolbars
  • Smart Lock can be accessed by developers and publishers

New Developer Tools

  • Android Studio – A new version of Android Studio gives developers access to new Android M features such as code development for C/C++ alongside of Java.
  • Design Support Library – Essential components for use in material design apps are provided in this new library. Motion-enabled toolbars, navigation view and floating action buttons are among new functionality available. Everything is backward-compatible with API 7 so modernizing an Android app does not require a complete rebuild.
  • Google Play v7.5 – New features in Google Play include new Google Cloud Messaging and Google Case APIs, Smart Lock Passwords, and a Google Maps API for Android wearable devices.

None of these features are yet available and may not be present for months or even years on older devices unable to update the OS. However, web users will be able to enjoy many Android M features on Chrome, Gmail and Maps when they receive updates. For phone users, the first Android M device is a new Nexus phone launching later this year. Android M will be more widely distributed during the next round of showroom device releases from mobile device manufacturers in the first half of 2016.

Apple’s Swift Programming Language is Gaining Popularity

Apple’s Successor to Objective-C

In the latter half of 2014, Apple announced a new programming language, Swift, they had been secretly developing for several years to replace the aging Objective-C used for iOS an OS X application development. Swift has since come on strong with developers worldwide thanks to the many advances this language offers.

Compared to Objective-C, programming with Swift is streamlined and concise. Language features and the interactive development tools help avoid common programming errors. The highly-optimized LVVM complier produces fast, native code. Having coalesced some of the most popular and productive language features from Ruby, Python, C#, Rust and other languages makes it a highly productive platform for even junior engineers.

Most Loved Language by Apple Platform Developers

Almost immediately following Swift’s release to the programming world, it enjoyed over 11 million downloads.

iOS and OS X programmers love it because of its productivity features, elimination of unsafe code classes, automatic memory management and streamlined syntax. Variables are automatically initialized before first use, arrays are automatically checked for overflow and three-character keywords provide an easy and consistent way for programmers to express data types.

Built-in to Swift are all the object-oriented features that make interfacing with Apple’s Cocoa and Cocoa Touch easy and powerful. The LLVM complier ensures app code stability and top, native performance on Apple platforms.

Swift’s Rapid Rise in Popularity

In the first several months after Swift’s introduction, it is enjoying a meteoric rise in popularity as it climbs the charts of programming language adoption. Already, it is in the top 20 most talked about and most used languages according to surveys by RedMonk and StackOverflow. Their lists include heavy hitters such as Java, JavaScript, C++, Go and Rust. By comparison, Google’s Go, introduced in 2009, only broke into the top 20 rankings this year.

Part of that success is due to Apple’s anointment of Swift as their replacement for Objective-C, but a great more is due to the well-engineered nature of Swift to reduce new programmers’ learning curve and increase the impact of their programming efforts.

Large Enterprises Using Swift Are Impressed

Swift is already being taken up for large, customer-facing projects from big names such as DuoLingo, LinkedIn, American Airlines and Getty Images. Their results are showing Swift’s benefits in productivity and application stability that were designed in by Apple.

The ability for junior programmers to spin-up quickly on Swift is partially due to heavy borrowing of the most popular syntax and expressivity of other popular languages. Programs in Swift do a lot more with less code thanks to its brevity. Thus, coders can concentrate more attention to interfacing with the Cocoa and Cocoa Touch APIs.

Swift has significantly reduced debug work, while increasing data type and logic checking within the IDE and compiler. For instance, DuoLingo found that 80 percent of bugs in new code were due to Objective-C libraries rather than their Swift code.

 

Creating a new programming language is not a task for the faint of heart. Supporting it with a quality IDE and educational resources is just as daunting. Swift seems to be succeeding on all counts so far. Its popularity is reflected by the number of new Swift courses being offered at major universities such as Stanford and international technical schools in Britain, Germany and Australia.

Though Swift is off to a tremendous start, it probably will not dislodge the top 5 development languages this year. However, with Apple’s penchant for quality engineering and superb customer experience, its continued ascension is likely.