Archive for the ‘mobile apps’ Category

Technology updates for mobile apps

June 25th, 2021 by Ishan Geeganage

The iOS operating system for Apple devices, and the Android operating system for Samsung and many other brands of mobile devices, are constantly being updated to provide tools to allow developers to implement new features supported by new hardware, and to improve the performance and security of apps on iTunes and the Google Play store.

This article provides an overview of some recent enhancements to the operating systems and developer environments, which will flow through to app features and opportunities for your future mobile apps.

Wearables

Both Apple and Google have recently enhanced the libraries and opportunities available for developers to provide richer experiences on wearables, such as the Galaxy watch and the Apple iWatch. This is in response to the increase in proliferation of wearables (watches, rings, fitbits etc) and the internet of things, whereby devices such as TVs, motor vehicles, gas meters, watering systems and the like are internet enabled.

Now 3rd party apps are able to add tiles to the watches bringing to the front of the user experience information from your app, where that was previously only available to proprietary apps. In addition, 3rd party apps have more access to notifications, including the ability to break through “do not disturb” features. However, we need to bear in mind that, particularly in the case of Apple, the review process is very stringent and Apple will be guarding the use of these features very carefully to ensure that they are only used in the most appropriate circumstances.

App Store Promotion

Apple, which lags behind Android with regard to the ease with which apps can be promoted, have announced that they are improving the Apple Store Connect to allow app owners to test images used within the app store, to select those that attract the most downloads, and promote events related to their apps also from within the app store.

Apple are now supporting promotion codes to be used by app purchasers in order for app owners to run promotions to provide a discount or free app usage for a period of time. However, Apple and Google continue to have differences in the way promotions run (Google being more flexible) which ultimately constrains the marketing of apps particularly when you want to be “fair” to all segments of the market. Google Play Store’s promotion code and discount functionality offers more flexibility than iTunes, and in fact Apple will no longer allow you to build in your own promotion code facility, even when all payment for the app is taking place via the Apple payment system.

Apple do like to promote their own ecosystem at the expense of others – not surprising really! Another example of this is if you allow users to sign in to your app using a 3rd party authentication mechanism such as a Google account or Facebook account, you must also allow them to use their Apple ID to login. This means that you require custom code in your cross platform app to remove the Apple ID login for Android users, and you need to support Apple ID login even if you aren’t expecting many users to want to login this way.

Google are also planning improvements to the Google Play Store with regard to promoting apps for wearables, and making it easier for people with wearables to install apps on their watch or other devices.

Privacy

Both Apple and Google are focusing on enforcing privacy for users of apps. We discuss the privacy changes on the Apple platform in another blog post about the launch of iOS version 14.5. Google’s Android version 12 (still in beta) is also giving privacy a boost in what it calls “Private by Design”. A few of the changes include Bluetooth scanning for nearby devices no longer requiring location services to be switched on, and where location services are required, allowing the user to only report an “approximate location”. In addition, users will be able to permit an app to take an action “this time only” instead of for all time.

Concurrency Supported Natively

Apple have released an updated version of Swift – the language in which developers now build iOS Apps – which allows concurrency (the app executing more than one command simultaneously) within the language. This is a big win for future app performance, for example, depending on your app concurrency could allow the user interface to continue to present new information to the user, while their previously submitted information is being processed. Kotlin – the language of choice for native Android development – has supported concurrency and threading for some time.

Compiling iOS Apps in the Cloud

Another important step forward in the iOS app development ecosystem is the announcement of XCode Cloud. Whilst still in beta, Xcode Cloud will facilitate continuous integration and continuous delivery for building apps and automatically send notifications to testers. This will be possible when XCode Cloud is used in conjunction with a git source code repository. It will also allow developers to compile the app in the cloud, rather than taking minutes / hours to compile on the developer’s computer, effectively preventing them from doing any work while that is happening.

Both Apple and Google are improving developer tooling to help developers test parts of their application through better emulators e.g. the new CarPlay simulator for Mac, and the new virtual heart rate sensor in the Google emulator.

Better support for Augmented Reality (‘AR’)

Google announced in March an overhaul of their Google Maps functionality, including the improvement of their Live View Augmented Reality feature which allows you to point your phone at the surrounding buildings (in large cities that have been mapped) or within buildings (such as inside airports) in order to figure out where you are, and get live on screen directions pointing you to where you need to go.

Apple has recently launched the RealityKit 2 library, in order to allow the creation of high-quality, photo-realistic 3D models of real-world objects in minutes by taking photos shot on iPhone, iPad, or DSLR and transforming them into 3D models optimized for AR. Google also has made recent improvements to the app developer environment for easier implementation of AR within Android apps.

AR is clearly an area where both platforms are keen to press forward and provide richer user experiences, and not just for gaming!

Foldables

With the release of foldable mobile devices such as the Galaxy Z Fold 2, the Android development libraries have been enhanced to allow developers to customise the user interface in different ways for foldable devices, and mobile devices with larger screen sizes.

All the above changes are welcome enhancements, but many of the features rely on users updating their phone operating systems or hardware. Still it is good to keep the above improvements in mind when considering functionality for your new app, or upgrades to an existing app.

If you would like to discuss your app idea, don’t hesitate to get in touch.

Facebooktwitterredditpinterestlinkedinmailby feather

Adding Voice Control to your Mobile App

February 11th, 2020 by Ishan Geeganage

Allowing the user of your mobile app to instruct it via Google Voice Assistant or Siri is a great way of making it easier for your user to get on with their day, and get the answers or action they need to accomplish done quickly, or when their hands aren’t free or glasses nowhere in sight.

Access to Google Voice Assistant (Android) or Siri (Apple) are governed by the methods available to interact with these APIs, and that means voice control is constrained to very particular functions – although the available functions has been significantly extended since we last wrote on this topic back in 2016. Below is a list of the areas in which we can currently use voice activation / control:

Google Voice Assistant

Domain Supported Actions
Alarm Set Alarm
Set Timer
Communication Initiate a phone call
Fitness Start/Stop a bike ride
Start/Stop a run
Start/Stop a workout
Show heart rate
Show step count
Location Book a Cab
Media Play music from search
Take a picture
Record a video
Open Open URL
Open App
Productivity Take a Note
Search Search using a specific app

Siri

Domain Supported Actions
VoIP calling Initiate Call
Search the call history
Messaging Send Message
Payments Send payments.
Request payments.
Pay bills.
Search for bills.
Search for and view account information, including balances, points, and miles.
Transfer money between accounts.
Photos management Search for photo and show them in the app
Fitness activities Start, pause, resume, end and cancel workout
Ride Booking Book rides
Provide ride status information
CarPlay integration (not supported on watchOS) Activate and save a drivers setting
Change the cars audio source
Change the cars climate
Change the cars defroster settings.
Change the cars seat settings.
Change the cars radio station.
Vehicle integration Activate hazard light or honk the horn
Lock and unlock the doors.
Check the current fuel or power level.
List and Notes Create to-do lists and items.
Search for to-do lists and items.
Mark to-do list items as complete.
Create reminders based on a date, time, and/or location.
Create notes.
Search for notes.
Modify notes.
Media Search for and play music, audiobooks, and podcasts.
Like or dislike items.
Add items to a library or playlist
Restaurant Reservation Create and manage restaurant reservations
Visual Codes Show a visual code, like a QR code or bar code

In every main OS version release, we expect there will be new opportunities added into these services. This blog was written based on:

  • Sirikit support iOS version 10.0
  • Google Voice Action support version 21

It is also important to note that some actions can only be implemented in either Android or Apple, but not both e.g. search can only be carried out in your Android app not in your iOS app. In iOS you can scan a QR code with your voice, but in Android you cannot.

How is Voice Control added to my App?
In order to allow voice control of your app, the app must be programmed specifically to be accessible by voice control and particular Actions listed above. When a person downloads your app and installs it on their device, they must agree to voice control being allowed. Then when a voice command is received by your phone that relates to one of the domains & supported actions listed above, and which has a responding activity within your app, then the functionality of your app can be triggered.

What Can I Make My App Do After Receiving a Voice Command?
If your app wants to access any of the standard apps that can be controlled by voice, then your app can be programmed to interact with those standard apps upon receiving a voice command. For example, in your custom app, if you wanted to take a piece of content from that app and save it to a Note (in-built device app), that can be achieved using voice commands.

You can’t talk to your app about something entirely outside the voice controls mentioned above. For example, you can’t say “Hey Google, in >mobile app name< open my transaction history.”

In some cases, your app will ask for confirmation before taking an action e.g. making payments, confirming you would like to make a particular booking, and so on. This is to ensure that the voice interpretation has correctly understood your request.

What Happens if there are Multiple Options?
Just say your mobile app contains a search feature, and you want to allow the user to use a voice command such as “Hey Siri, search for xyz”. Simultaneously of course your phone will also have at least one other search application. When your phone receives a search command, it will then ask you which app would you like to use for your search: x or y? Once you have answered that question, your search will be performed via the selected app. Alternatively, you could ask “Hey Siri, search >mobile app name< for xyz”.

Can I add a Custom Voice Command?
You might be tempted to try and work around the limited number of voice commands currently available e.g. “oh, I will use the ‘Book a Cab’ voice command, and have that do something completely different instead”. Both Google and Apple check your app before publishing it in the app stores, and we expect that they will reject your app if it has been programmed in this manner. In addition, if your app is not in the category of ride sharing, your app will not be accepted if it contains voice controls in the Ride Sharing App domain.

If you are looking to add voice control to your app, let’s have a chat!

Facebooktwitterredditpinterestlinkedinmailby feather

What’s Coming for Mobile Apps?

October 22nd, 2019 by Heather Maloney

Over the past 6-12 months you may have noticed the following trends in mobile apps, and mobile devices:

  1. Biometric capability has improved and become more frequently incorporated into the hardware and operating systems of mobile devices, including unlocking through face recognition.
  2. Improved recommendations supported by artificial intelligence (‘AI’) – Spotify suggested music is an obvious example, but the AI used to analyse the vast amount of data gathered by the tech giants is leading to greater accuracy across a whole range of applications; we will be oblivious to many of these.
  3. Increased in-app advertising, including at the start and in the middle of video content in the YouTube app (although you can pay to go ad-free) and in amongst search results in the Google Search app. In addition, the ads presented to you will have been more relevant, including closely tied to your previous online activities – this is another outcome of AI.
  4. Reduced access to free games; increasingly the free component of a game is very basic.
  5. Two-factor authentication is being insisted upon by a greater number of apps. Bottom line; it is more secure.
  6. Increased support for Apple Pay and Google Wallet.
  7. Dark Mode – the ability to change the look of your application to a dark background with light text over top – has become broadly available due to it causing less eye strain (in darker environments) and also because it reduces energy use (if your screen is OLED or AMOLED technology).
  8. Proliferation of betting apps.

And of course, the 5G network and 5G devices became available in major Australian cities.

So what is next? We expect the following features to be added or improved in mobile apps over the short to medium term:

  • Biometric Authentication – we expect it to become more commonplace that authenticating into an app will support face or fingerprint recognition, using these settings already present on your smart phone. In addition, we expect that more apps will not require any authentication if a recent biometric authentication has taken place.
  • Improved Graphics and Faster Processing – the standard chipset in Android mobile phones (and Windows laptops) is moving away from ARM to Cortex-A76 which the manufacturers expect will increase the performance of the devices by 30 – 50%, and mean that they will be faster than Apple devices, with better battery performance. This will allow support for improved graphics to be incorporated into mobile apps. Improved performance is also necessary to run apps which provide virtual reality and augmented reality. We expect to see more apps incorporating augmented reality such as product visualisation for consumers, learning a new task for students, and immersive navigation supported by Apple’s patented augmented reality mapping system.
  • In-app Advertising will grow with more apps utilising this revenue model, or providing a subscription option to switch off ads.
  • Beacons will be increasingly used to advertise to nearby customers when sales and customer-specific offers are available. (For more details about bluetooth beacons).
  • Wearables – more apps will be built to enable use of the apps on wearables such as smart watches, including more apps which function standalone, that is, without needing to have a smart phone nearby operating as the hub. This is to meet the demands of the growing wearables market. (“Shipments of wrist-worn wearables, inclusive of smartwatches, basic watches, and wrist bands, reached 34.2 million units, up 28.8% year over year during the second quarter of 2019 (2Q19), according to new data from the International Data Corporation”).
  • Health Apps – more apps will be launched which have the aim of improving monitoring of the health and vital signs of individuals. We expect the information gathered as part of these apps will fuel AI learnings about particular health conditions, which will provide a feedback loop into the search for cures and improved quality of life for sufferers of common diseases.
  • AI will be used to achieve more common tasks, and will continue to improve upon the user experience with the likes of chatbots implemented within apps. By definition, the more these features are used the better they become.
  • Increase in things controlled by Apps (IoT) – more and more things will be able to be controlled by apps, or report their status to apps such as the PlumbGuard app designed and built by Contactpoint.
  • Financial Apps – we expect to see many more apps that address the financial needs of customers; whether that’s banking facilities, budgeting, or payment. Payments via peer-to-peer solutions and using Google Wallet and Apply Pay are likely to increase.
  • Accessibility will be given greater attention. Human-centric design asks not just how would the average user achieve something, but how would a person with a disability carry out the required task?
  • Improved Access to Device Temperature – Android have recently added to the APIs available to apps on its platform the ability to keep track of the heat of the device. This will allow app developers to take action if the device is over heating and therefore improve the user experience.

What would you add to this list?

Facebooktwitterredditpinterestlinkedinmailby feather

The Evolution of Cross Platform App Languages

September 12th, 2019 by Ishan Geeganage

Contactpoint has been designing and developing mobile apps for our clients for over 8 years. The languages used to build apps have changed significantly over that time – both within a particular platform (aka “native apps“), as well as the languages used to build what was first known as “cross-platform” apps, which are now differentiated by the labels “hybrid” and “cross-platform”.

Native apps are so-called because they are written in the language that is native-to-the-operating-system of the destination device. Apple (and the iOS operating system) originally required apps to be built in Objective C, however in the last 3 years Swift, Apple’s replacement language, has overtaken Objective C. Both Objective C and Swift started out being proprietary languages; Swift is now open source. Android apps have always been built in the Java programming language, however, more recently Google now also supports the Kotlin langugage. The IDEs that programmers use to build Android mobile apps have changed significantly over the years, which also impacts on the method and efficiency of programming. Eclipse was the IDE of choice for several years. Android Studio has taken over as the tool of choice, providing a much more “drag and drop” style IDE.

The term “hybrid app” refers to apps that are written in HTML, CSS and Javascript, and then rendered within the native WebView component. That means the resulting apps perform much more like websites. Access to hardware components such as GPS and cameras is limited, and requires that the native platform has provided a plugin allowing the WebView to access that particular component.

The goal of hybrid apps was to reduce the time and cost of development, by reducing the need to code your application twice – once for iOS, and again for Android. In reality, depending on the functionality required for an app, even the simplest would often require customisations for a particular native platform, so perhaps 80% of the app was written in the cross-platform language, and the balance was added in native code instead. In addition, the resulting app will be larger and slower than a native app, and the look and feel, being the same for all platforms, will lack the distinctive and standard user interface features that you would expect on an Apple device or Android device.

Over the last year or two, the programming languages landscape has changed significantly with regard to the development of what is now labelled “cross-platform” apps. Cross-platform apps are built in a particular language, and then compiled directly into the native code of the destination platform. In addition, a cross-platform app can usually also be deployed for desktop operating systems (Mac, Windows and Linux), providing even greater opportunities for deployment of your solution. These new languages include ReactNative and DART. The Flutter software development kit (SDK) is used along with DART to compile an app. Flutter is an open-source SDK created by the team at Google, and being the youngest option on offer is still gaining widespread use i.e. it will be more difficult to hire a developer with DART and Flutter skills.

Some functionality still cannot be developed in these newer cross-platform tools. Interacting with another device over bluetooth, for example, requires that portion of the app to be developed in the native language, and the end result may not perform as well as a native app.

Whilst cross-platform apps perform much better than Hybrid apps, in comparison with native apps cross-platform apps:
– are 50-60% larger than native apps
– use approximately 30% more memory than native apps
– use the CPU less efficiently

At Contactpoint we continue to build both cross-platform and native apps. An important part of the app planning process is to help our clients to choose the best platform for the development of their desired app, having regard for:

  • functionality, and in particular what hardware elements are to be utilised by that functionality
  • target audience
  • budget
  • time to market
  • long term goals

Please get in touch to discuss your app idea, and which style of development will be best for your solution.

Facebooktwitterredditpinterestlinkedinmailby feather

Battery Life Management and Bluetooth in Mobile App Development

August 26th, 2019 by Ishan Geeganage

Apple’s newest iPhones promise improved battery life. However, much of the improvement has been achieved through constraining background processes, rather than improvement in hardware. The implications on app development has been significant. This article discusses battery life management in light of recent mobile apps we have designed and built for our clients, which connect to IoT (internet-of-things) devices via Bluetooth.

Bluetooth Connectivity
Bluetooth is a great option for communication between devices because it requires very little energy in the process. However, the downside is that it only works for short range communication, and can lose connection in certain conditions e.g. low battery, issues on the device.

Different Bluetooth Profiles
There are many different profiles associated with bluetooth connectivity – it is all bluetooth, but the profile will have implications for the functionality that can be achieved for your mobile app. The available options are governed by the hardware and software in the device to which your app is connecting. We regularly work closely with the IoT equipment designer, so can have an influence on the selected profile and information delivered between the device and the mobile app, but this is not obviously possible when your app is connecting to a device with a previously established bluetooth profile.

There are many different bluetooth profiles – below is a list of those more likely to be involved in a mobile application:

  • Bluetooth Low Energy (BLE). An even lower power consumption protocol, natively supported by Apple, Android, Linux, Windows and Mac operating systems.
  • Bluetooth A2DP – Advance Audio Distribution Profile. Used for streaming audio from one device to another over a Bluetooth connection.
  • Bluetooth HFP – Hands-Free Profile. Used to allow car hands-free kits to communicate with mobile phones in the car.
  • Bluetooth HDP – Health Device Profile. Facilitates the transmission and reception of Medical Device data including heart rate monitors and temperature monitors such as that collected on a smart watch or fitbit style device.
  • Bluetooth HSP – Headset Profile. Used to interact with the user via a headset.
  • Bluetooth MESH – Mesh Profile. Used for efficient smart lighting systems and IoT networks.
  • Bluetooth SPP – Serial Port Profile. Allows setting up virtual serial ports and connecting two Bluetooth enabled devices.
  • Bluetooth VDP – Video Distribution Profile. Allows the transport of a video stream.

Two examples of recent apps we have designed and built for our clients, utilising bluetooth technology, are described below.

Travel Dua App

For this app we used Bluetooth A2DP profile to the play a sound file over a car audio system (most recent motor vehicles which provide bluetooth connectivity support the A2DP protocol). Before playing the audio, the mobile device (smart phone) with the app installed must be paired with the car via bluetooth. The app we designed and built for our client continually checks for any paired A2DP devices, so that when a driver gets into their vehicle and starts their car, when the paired device is found the app immediately plays the sound file embedded within the app using the vehicle’s audio system.

It is also possible that the user would like to play the prayer sound file at other times, so the app allows the user to also manually play the sound file, at which point the sound will play over the mobile phone’s speaker instead.

PlumbGuard – Plumbing Safety Device App

The purpose of the HLP Control’s PlumbGuard app is to provide an additional way to alert a plumber when a hazardous risk is present. Designed and built by Contactpoint, the app scans for and receives data from plumbing safety devices within range, which use beacon technology to advertise their current status. Without pairing to the device, the app can read the advertising packet broadcast by the device.

The app on the plumber’s mobile phone shows the status of all the devices being monitored as reported by the received data set, including the presence of any hazards, the current mode of the device (charging, self-test etc), and battery level.

If the device is low power mode or hazard status, the app will alert the user by playing the relevant warning sound and vibrating.

Battery Management

Battery life is a very important aspect of mobile app development. A device without power offers no functionality at all, and users will notice if a particular app drains their battery more quickly than normal and will likely remove it.

In addition, smart phones are judged by consumers, among other things, on the average time their battery lasts before it needs to be re-charged. For this reason, both Google (Android) and Apple (iOS) provide several external APIs for use within mobile apps, and they employ several internal mechanisms to help conserve battery life which are partly dependent on the platform and device speed. As app developers, we must work within these constraints to deliver the required functionality.

App States
When developing a mobile app, we have to consider each of the following app states, to achieve the most efficient use of memory and battery life, whilst delivering the required functionality:

  • Not Running – the app has not started yet, or was running and has been terminated by the system.
  • Foreground:
    • In-active – the app is running in the foreground but not presently receiving any event. This could happen for example when an inbound call event occurs or a message is received. In this state we can’t interact with app UI.
    • Active – the app is running in the foreground and receiving events. This is the normal mode of an app.
  • Background – an app is running in the background and executing its normal function. Freshly launched apps commence in an in-active state and then to active state (there platform specific differences in this behaviour).
  • Suspended – an app is in the background and is not executing the code. The system moves the application to this state automatically and does not notify. This usually occurs in the situation where the device has low available memory, and is also platform specific.

Background services
It is also possible in very specific states to program an app to perform certain functions within background services. Background services operate without direct interaction by the user. A background service has no user interface and is not bound to the life cycle of activity. Background services are used for repetitive and potentially long running operations such as checking for new data, connection management, data processing etc.

Apple has significant restrictions in place for the use of background services, in an effort to improve user experience and extend battery life.

Summary

Depending on the functionality of your app, you may need to specifically program for different states of operation (aside from the suspended state which is controlled by the platform).

As part of building the two apps mentioned above, we utilised local notifications for the Apple versions to ensure that the app is woken up at the appropriate time, in response to the likelihood that the app would be moved by Apple to the background. Local notifications effectively bring information into the foreground to make it easy for the user to bring the app back into an active state by pressing on the notification. Local notifications are triggered at the point that the app goes into the background, and therefore are available from the app lock screen when the user is ready to resume use of the app.

Facebooktwitterredditpinterestlinkedinmailby feather

Cloud does not equal the Internet

November 13th, 2018 by Heather Maloney

Cloud does not equal the internet
People frequently use the term “cloud” or “in the cloud” to simply mean located on the internet or their private intranet. I’ve done it myself, for the sake of expedience. However, they aren’t the same thing, and it’s important to understand why so that you can wisely choose the internet services you are accessing for your business or in your personal life. For example, cloud hosting is not the same as shared web hosting, for the hosting of your organisation’s website.

The internet is the connection of computers around the globe using TCP/IP protocol to manage the connections, and participating in the sharing of information using the HTTP protocol (the worldwide web).

The term “Cloud” or “Cloud Computing” refers to technology services, usually delivered over the internet, which are characterised by:

  • Distribution of a system (program and its data) across many servers and locations, to provide for greater performance, but still providing up to date and correct data.
  • Automatic provisioning (addition of greater capacity via more CPUs, memory and disk space) to meet minute-by-minute requirements.

Applications embodying cloud computing are often further labelled as SaaS (software as a service), PaaS (platform as a service), IaaS (infrastructure as a service), and other ‘…aaS’ names. These labels draw attention to which part of the abstraction of the technology is controlled by the buyer compared to the service provider. However, not all applications given these labels actually provide the two main characteristics that I am asserting differentiates cloud computing ? distribution across many servers, and automatic provisioning. Instead, software delivered as a service via logging into a web application may in fact be stored on one server, in one location, with one database, and require the service provider to manually procure and set up new servers when usage demands the additional resources.

The characteristics of cloud technology provide advantages and disadvantages which I will discuss in a moment, but let’s first consider the technological challenge cloud technology is trying to solve.

As you can imagine, there’s an awful lot of information contained within Facebook. Millions of users each adding several posts, and making hundreds of comments, on a daily basis, adds up very, very quickly. Not only is there a lot of data being stored and accessed by users of Facebook, people are posting and reading comments from all around the globe; some on their phones while riding on a train, others are sitting at their desktop computer in the back of beyond, and everything in between. No one will use Facebook if it takes more than a few seconds for the content to appear on their screen, and Facebook is used by people all around the globe. Facebook is just one example of an application which handles vast amounts of data and serves vast numbers of people.

To make Facebook possible, as well as other applications like it, the underlying technology has to be distributed across multiple servers and locations – a distributed system. There are numerous technical models used to achieve a distributed system. Below are brief descriptions of just a few of the techniques to give you a feel for the complexities involved.

Techniques

Sharding. A term allowing a single database to be stored across multiple servers by allocating logical portions of the data onto different servers. A very rudimentary example would be determining which server to store the data based on a range of identifiers such as in the case of user accounts the decision could be made to store all data with a user ID between 1 and 100,000 on server 1, between 100,001 and 200,000 on server 2, and so on. The application retrieving the data would send the query to the application server, and then the database server would work out which server to get the data from based on the user ID, get that data and return it back to the user. There are many options for the way that a database may be divided; the right way for a particular application will need to consider the way current data is spread across it’s attributes as well as how future data may grow.

NOSQL. The example given above for sharding described separation of data contained within a relational database; the most common database architecture up until very recently, which as the name suggests relates tables of information to one another by linking IDs. A person’s record in a database may contain an ID to another table storing the details of the school they attend (name, address, phone number etc) – hence being called a relational database. NOSQL or Document Databases have become more popular recently as they can be spread more easily across multiple servers because all the data associated with the person in the sharding example would be stored in one document rather than spread amongst related tables. Document databases often come with functionality built into them to manage distributing documents in the collection across multiple servers.

Caching. Storing data located near to users, providing faster access particularly for commonly used information is referred to as caching. Facebook makes heavy use of memcache to store recently accessed Facebook information in memory, which is much faster to read than from the Facebook MySQL database which is housed on hundreds of thousands of servers. Content Delivery Networks (‘CDN’) are an example of caching of web content to ensure it is closer to your website visitor.

Other concepts such as virtualization, utility computing, and grid computing are also key in the implementation of cloud computing particularly with regard to auto-provisioning of additional computing resources.

Advantages

We have touched on some of the advantages of cloud computing in relation to the problems it is trying to solve. The advantages can be summarised as:

  • Security. A cloud solution must be focused on security in order to have success over the long term, and they usually have significant resources at the ready to keep security up to date, and respond quickly when a new threat arises. Look for:
    • End-to-end encryption which ensures the encryption of all data in-transit across the Internet and stored at-rest in the cloud, with the encryption keys held by you and used to encrypt the data before it leaves your computer.
    • Sophisticated access controls allowing you to set role-based authentication to control what exact data each user can and cannot view, edit or share.
  • Performance. Because there is likely a server nearby to the user, rather than the user’s request needing to travel half way around the world and back, you can expect the speed of cloud systems to be significantly better. Performance is a key factor for organisations with a workforce distributed around the globe.
  • Scale. The ability to distribute an application and/or its data across multiple servers and locations removes or significantly reduces the constraints on how large an application can grow or how many customers it can efficiently serve.
  • Cost. Another key benefit of cloud is that usually someone else is responsible for concerns such as installation of software and purchase of licenses, management of software patches, backups, hardware upgrades and repairs, anti-virus and protecting against malicious attacks, all handled by the provider of cloud computing rather than the organisation requiring the technology. When comparing the cost of cloud and non-cloud you must take into consideration the total cost of ownership of the alternatives. Auto-scaling (also referred to as elastic computing) is a factor in both cost and performance, as it allows systems to scale up (additional costs) when demand increases, and scale back (reduce costs) when demand is low, allowing the owner of the system to only pay for resources when they are required.

Disadvantages

It is important to also be aware of the potentially significant disadvantages of cloud computing:

  • Data ownership / sovereignty. Where is your data really? Who has access to it? Have you read the terms and conditions with respect to the ownership of the data? Can you remove your data permanently, or will it still be accessible by the cloud provider even after your account is closed? Often the owner of the data you place into a cloud computing solution is actually the cloud provider, not you. To help mitigate this issue, some cloud providers are implementing servers in additional countries including Australia, to help organisations to use cloud services without moving their data overseas, but you need to check where your data is stored; often such storage choice will increase the cost of the solution. NB: even if your data starts out being stored in Australia, if the data is owned by a US company, they may be forced to move the data back to the US for scrutiny by American law enforcement agencies – this has already happened in the case of Google in February 2017.
  • Privacy. Facebook has been criticised at the highest levels of American government, and by governments around the world, for the way in which the data it gathers (albeit via their free service) has been used and sold on to 3rd parties. The situation with Facebook and other cloud solutions has been a factor in leading to the new European privacy legislation (GDPR). When you utilise cloud platforms, are you comfortable with manner in which they use the data that you are storing within it (read their terms and conditions)? Can you trust the organisation to abide by their promises?
  • Control. Can you create the functionality you need to support your particular processes, or are you now constrained by the services provided by the cloud platform? Using a cloud service to remove the need to create that service constrains you to the functionality the service offers. The more you depend on a 3rd party service, the less likely you are to be able to innovate in that area of your business on application, which may well slow your organisation down and remove your opportunity to create competitive advantage.
  • Cost. Whilst being able to pay per second for your application using cloud technologies may sound like it is going to reduce your cost, if your application isn’t built to take advantage of cloud technologies, the opposite may occur and your costs can be significantly more than using simpler internet technologies. Cost can also be significantly greater if you use the wrong technology on the wrong cloud provider. For example, whilst the major suppliers of cloud technology usually allow you to run any type of application on their cloud servers, the cost of running those different types may be very different. Running a MS SQL database on Google Cloud is extremely expensive, for example, compared to running it in the Microsoft Azure platform. You need to choose your technology wisely.
  • Skills. Not everyone developing applications is experienced in working on large scale applications, and the implementation of applications using cloud technologies is relatively new, so finding personnel with the required skills can be very challenging.

Whilst I have primarily been discussing cloud computing from the point of view of building an application such as Facebook, cloud computing underpins solutions such as Office365, DropBox and GSuite. These applications allow users all over the world, sometimes the one person in different parts of the world in one day, to access their data – emails and files for example – and programs such as GSuite and Word Online, with great performance, and without the data being [noticeably] out of date, most of the time. Such applications are also increasingly providing users with the capability to collaborate on files e.g. contributing to an online document simultaneously, again while located in different cities and countries.

For such commodity type applications, where easy access from anywhere, across multiple devices, makes business much easier, the decision to sign up for cloud computing may feel like a no-brainer. But you still need to consider the disadvantages discussed above.

In summary, not all internet applications are using cloud computing technologies. Cloud computing is a complex area, utilising multiple strategies aimed at providing up to date information, to mass users all around the world, with great speed. It is important that you way up the advantages and disadvantages of cloud computing for both your commodity technology needs (email, file sharing, file storage, and other operational systems) as well as when developing your own applications.

If you would like to read more:
https://enterprisersproject.com/article/2017/1/three-things-companies-must-know-about-data-sovereignty-when-moving-cloud
Use of Memcache by Facebook: https://www.usenix.org/system/files/conference/nsdi13/nsdi13-final170_update.pdf

Facebooktwitterredditpinterestlinkedinmailby feather

Technology Predictions for 2018 around online tech

December 11th, 2017 by Heather Maloney

2018 Tech Predictions

As we wrap up the last 2 weeks of 2017, we have been considering what we are likely to see in 2018 technology. You might like to mull over this with your mulled wine and Christmas pudding (or beer and BBQ). Better still; give it some thought as you carry out new year planning.

The Top 8 things we expect to see around online technologies during 2018:

  1. Increased pressure on smaller online retailers. If you don’t provide a very niche product or experience, that is, if the products you are selling online have many competitors, then your customers are likely to migrate to the larger online retailers including Amazon. The winners will be those with the most products, with the more consistently lower price, providing an easy shopping experience, and fast low-cost delivery.
  2. Increased percentage of market share to smart phones running the Android operating system, particularly due to the uptake of Google pixel, but also lower cost Android smart phones.
  3. Increased automation of homes using internet-connected devices due to the major marketing push of Google Home.
  4. Increased integration between apps to make completing the jobs you need to get done even easier.
  5. Increased specialisation of apps for niche markets, again with the intention of making it super easy for people carrying out a task in a well-defined category, to achieve that task as efficiently as possible.
  6. Increased online shopping and therefore parcel delivery into homes; delivery costs paid by the consumer will continue to fall.
  7. Increased use of Apple Pay and Android Pay as more and more people use their smart phones as their payment device.
  8. Increased development of apps that utilise AI / machine learning, making decisions on behalf of organisations in order to more rapidly provide a personalised experience for individual app users.

Feel free to contribute your thoughts!

Facebooktwitterredditpinterestlinkedinmailby feather

Controlling my App using Voice

October 15th, 2017 by Heather Maloney

Adding voice recognition to my mobile app
In order for the apps on your smartphone to be voice controlled, they need to be specifically programmed that way.

Some of the more common voice-enabled apps you are likely to find on your smartphone are:

  • Calendar – ask your smartphone the time of your next / first appointment, on a particular day, and it will tell you the answer and automatically show your calendar appointments for that day on screen
  • Phone – tell your smartphone to call person X, or send a text message to person Y, and it will take care of these tasks, prompting you for the details as required
  • Alarm – set an alarm to go off at a particular date and time
  • Search – ask your phone to search for a topic, and it will display a clickable list of search results

Voice recognition technologies have improved significantly over the last few years, providing numerous options with regard to voice enabling mobile apps, including:

  1. The Android operating system for wearables (e.g. Galaxy watch), smart phones and tablets includes in-built voice control actions for carrying out commonly used tasks such as writing a note. It also comprises the ability for an app to include its own “intents” which listen for voice activation once the user has launched the app. Finally it includes methods for allowing the user to enter free form text for processing by your app.
  2. Google Voice Interactions API – a code library provided by Google which allows an app to be triggered via the Google Now interface – that’s what you’re using when you say ‘Okay Google’ and then say a command.
    okay-google
  3. Apple devices (iPhones, iPads, iWatch) are built on the iOS operating system. Native iOS apps are written in either Objective C or Swift (a more recent language). With the launch of iOS 10, the Swift programming language included a Speech framework to allow developers to more easily implement listen for voice commands, and manipulate voice into text for use within apps.
  4. SiriKit was released in 2016, providing a toolkit for iOS developers to add voice interaction through Siri into their iOS 10 apps.

    What-is-my-heart-rate-voice-interaction-with-mobile-app
  5. Cross platform apps need to use 3rd party libraries to interface with the native speech recognition functions.

It’s important to know that the speech of the user is processed by Apple’s servers or Google’s servers, and then returned to the mobile device, so some lag may be noticed particularly when dealing with longer bursts of voice. It may also have privacy considerations for your users.

3rd party APIs exist which are completely contained within the mobile device, meaning that the user doesn’t need to have an internet connection to use them, and the privacy issues are reduced. An example of such a 3rd party API is the CMU Sphinx – Speech Recognition Toolkit. The downside of using such a library is that you can’t avail yourself of the amazingly accurate voice recognition the large players have developed over time, including for many different languages.

Obvious apps which provide the user with significant benefit from the use of voice control include:

  • An app which improves or assists the job of a hands-on task e.g. chefs, surgeons, artists, hairdressers …
  • An app which is needed while a person is driving e.g. navigation, finding locations, dictating ideas on-the-go …
  • An app needed by a person with disability.
  • An app which involves the entry of lots of text.

We expect to see more and more support for voice in all sorts of applications in future. What would you like to be able to achieve through voice commands?

Facebooktwitterredditpinterestlinkedinmailby feather

The evolution of the mobile phone

August 27th, 2016 by Heather Maloney

10 years ago, who would have thought that a mobile phone would one day replace your:

  • schedule – and alert you when your appointment is coming up
  • watch – many people no longer where a watch; me … I wear a Samsung Galaxy watch which displays all the notifications on my phone … I accidentally keep calling it my phone, as it nearly is…
  • camera – taking better photos than most of the cameras of 10 years ago. Film free, and easy to share with your family at the press of a button
  • selfie taker – well selfies didn’t exist before the smart phone!
  • photo album – showing off your latest collection of baby photos couldn’t be easier
  • notepad – and store those notes in the cloud so that you can get them from wherever you are
  • weather service – do yo remember the phone number you could call to have todays’ weather read to you. I’m not sure that exists anymore. You probably have todays’ weather showing constantly on your phone home screen. At the press of a button you can get the next 5 days forecast, or the temperature as it will change throughout the day.
  • encyclopedia – need to read up about a particular topic? no problem just type in your search and Google / Bing will have the answer in a jiffy. I wonder who the last person in the world was to buy an Encyclopedia Britannica?
  • map – not only can you find where you need to go, it will also read directions to you as you travel
  • teletext service – write and deliver short messages to anyone in an instant
  • personal music collection – storing not just one ‘album’ of songs, but your whole collection, also backed up in the cloud just in case. Add to your personal collection on the go.
  • word processor – yes, you can write documents on the fly, if you are keen enough
  • calculator – including a scientific version
  • credit card – with the launch of Apple Pay and Samsung Pay, it is now commonplace to see people paying at the PayWave machines using their mobile phone. Leave the wallet at home!
  • banking – check your balances, pay your bills, transfer money from one account to another
  • shop – many online stores are now making it super easy for you to shop through their website, even on a mobile phone. Order your new clothes, or your groceries for delivery to your home, while you are on the go.
  • tracking device – let others know where you are, know when the Uber driver is about to arrive, know where your lost phone is …
  • pedometer – not everyone uses one of these, but not having to attach a pedometer to your belt is very convenient. Just make sure it’s not set to track the distance you travel as an indicator of your steps!
  • stop watch – time your sprint, your presentation …
  • health and fitness diary – your smart phone will also come with an app to track your daily exercise, diet and weight. Great for those attuned to the health and fitness of their bodies.
  • your latest novel – reading a book on your phone means one less thing to take with you on your daily commute
  • reference books – for example, the Bible is a hugely popular download, with many options, and allowing you to search and annotate
  • newspaper – catching up on the news is a cinch; no need to buy the newspaper (and don’t the news companies know this!)
  • magazine – most popular magazines now have a phone version
  • dictionary – check the meaning of a word as you read it
  • compass – for those who need to know what direction they are travelling in!
  • radio – and not just the local stations; we’re talking free radio from around the world
  • TV – or playing short videos shared through You Tube and other video platforms
  • in-flight entertainment – connect into the airline provider’s app and play from their collection of TV shows, radio and movies
  • video phone – not just talking … seeing the person you are talking to as well

But wait, you say, some of the above list are only if you have certain apps installed. Well, every function on your smart phone is facilitated via an app. The following are also examples of the apps commonly being used on mobile phones:

  • door key – yes, that’s right … no need to carry your keys; approach your door and voila it opens
  • parking meter minder – one of my favourite apps which makes my life so much easier, particularly as I rarely have coins on my person
  • taxi pager – Uber is the most incredible service combined with app. I’m sorry, but now I’ve used Uber, I’m unlikely to ever hire a taxi again. The benefits are amazing compared to the traditional way of getting a taxi ride, dealing with the driver, and paying at the end.
  • AFL fixture as well as the up to the minute ladder, and scores during the big game
  • watering system controller – another personal favourite of mine, allowing me to stop the watering of my lawn and other parts of the garden if it’s already raining. If I got organised, the watering could adjust itself based on the local weather station
  • mirror – okay, it’s really a live selfie!
  • torch – not the most powerful, but definitely that feature has come in handy for me more than once!
  • spreadsheet – I remember when the first spreadsheet program came out. Amazingly useful for all manner of mathematical modelling or just keeping track of and charting data.
  • expense tracker – there are a myriad apps for keeping track of your expenses, including scanning your receipts
  • shopping list – including ticking off as you fill your basket
  • recipe book – it can be a little tedious keeping the screen alive as you move between steps in your recipe, but I’ve used my phone for this purpose numerous times
  • heart rate monitor – more and more medical apps are coming out to help people monitor not only their heart rate but other important vital readings
  • social commentary – what’s going on in the news / TV / politics / sport … you can be part of it quickly and easily by posting on social media via your phone
  • game console – some games have been developed specifically for small phone screens and the unique way they are held; think tilt

Of course … you can also make phone calls! And you can make those free around the globe, if you have the right app installed.

No wonder people experience anxiety when they lose or break their phone!

Want to re-live the transitioning of the mobile phone? This article captures the main mobile phone models from 1973 through to 2008. The first smart phone only hit the market in 2006. How far they have come in just 10 years!

Facebooktwitterredditpinterestlinkedinmailby feather

Exploring the Introduction of 3D Touch for iPhone 6S

November 22nd, 2015 by Hubert Yap

The release of iOS 9 on 16th September, 2015 introduced two significant new features on iOS devices: Multitasking on iPad, and 3D Touch on iPhone. This blog post will explain what 3D Touch means for users, and how it can be incorporated into mobile apps to improve the user experience.
3D Touch for iPhones

At the time of writing, 3D Touch is only available for two device models: iPhone 6S and iPhone 6S Plus. Unfortunately the iPad Pro, which was released on November 2015, does not support this feature.

3D Touch introduces three new ways to interact with compatible iPhone apps:

  • Home Screen Quick Actions
  • Peek and Pop
  • Force Properties

Home Screen Quick Actions gives the user a kind of shortcut to up to four of the app’s key functions from the app icon on their home screen. Think of it like an additional navigation on the user’s home screen that allows them to navigate quickly to a specific screen or feature inside the app. This is a great time-saver for users, allowing them super quick access to their favourite function within your app.

The Home Screen Quick Actions can be a simple static set of shortcuts, or it can be a dynamic list of actions, or a combination of both. The static shortcut will always appear on top of the dynamically generated shortcut. They can contain up to two lines of text and an optional icon. The user can activate this feature by pressing the app’s icon on the home screen until they feel a small vibration which will then open the list of shortcuts (this is instead of the simple press to open the app, which of course is still available).

Peek and Pop allows the user to quickly preview content, such as a web page, from a link in their browser. This feature activates when pressing a user interface component (e.g. a link). If the link has any previewable content, its surrounding will be blurred to let the user know they can preview the content of that link. As the user keeps pressing with additional pressure, they will feel a small vibration, then a preview window (“Peek” window) will appear, displaying the content that will be shown if the user presses the link in the usual manner.

Whilst seeing the ‘peek’ view, the user has 3 options:

  1. Release the link. By releasing the pressed link, the “Peek” window will disappear, returning the user to the previous screen.
  2. Keep pressing. The user will feel another vibration and this is will “Pop” the window and take the user to the next screen as if they have clicked the link.
  3. Slide the screen up. This action shows additional buttons that the user can click to trigger a related action. For example, if they were pressing a website link, there will be an option to open the link, copy the link, or add it to a reading list.

The peek and pop feature is very useful when the user is not sure what will happen if they click a link, or when they are not sure if the link contains the information they require. For example, your application might present a collection of PDF files, listed by name. “Peek and Pop” allows the user to “Peek” on each file and release or “Pop” it instead of needing to click on each file and go back to the previous screen to click another file, until they find the file they are seeking. Again, it’s all about speed and convenience for the user.

Finally, Force Properties allows the app to detect the force applied to a certain UI component and triggers the app to react on the force event. For example, a piano app can now play a piano sound louder if the user presses the piano key harder; a drawing app can draw wider lines when the user strokes with greater pressure. Force Properties adds to pre-existing gestures such as tapping, tap-and-holding, swiping, and pinching, to allow intuitive behaviour upon additional pressure being applied to the screen.

3D touch opens up possibilities not previously available inside Apple apps. Whilst Force Properties usefulness depends on the interactivity of the app itself, we expect that most applications can enhance their user experience with the Home Screen Quick Actions, and Peek and Pop capability.

Facebooktwitterredditpinterestlinkedinmailby feather

Subscribe to our monthly

Contactpoint Email News

Our enews is sent out approximately monthly, and contains information on latest digital technologies, and how these can be used to help your organisation grow.

To subscribe, simply fill in your details below: