Categories
Software Technology Uncategorized

How geolocation and big data can be used to the advantage of your business apps

Nearly all industries have improved their efficiency through the use of geolocation. When it is combined with big data it allows for greater client satisfaction including more individualized customer experience, better targeted marketing and enables you to learn more about your own company.

Geolocation Apps & Big Data

Geolocation is most commonly used in marketing for geofencing, which targets clients who enter a certain location or area. This is often seen in shop apps which recognize when a client is near one of their stores and will then send them special offers, discount coupons, or other promotional information.

In similar vein big data analyses purchases to change or improve offers to better suit the needs of the consumer and allows a company to make their own products more attractive than those offered by the competition. For example a retailer can send special promotions and offers to a client whilst they are shopping in a competitors store. Equally, offers with a small time window can be sent to customers who are currently shopping in one of the company’s own on-line stores. This last example utilizes Beacon technology which works like geofencing but on a smaller scale, i.e. tracking the exact location of a client in the shop.

geolocation apps

Transportation and Logistics

Geolocation is indispensable for transportation and logistics where it is able to get the most out of the huge amount of data produced. Applications utilizing geolocation collate information about traffic jams, road works, quickest routes and allow for the communication of current locations and delivery times between the customer and the service/goods provider. For example, the client can keep track of the person who is delivering his food, and conversely a restaurant can also know exactly when the customer arrives to collect their order. Even within companies it is possible to create more realistic schedules and production timelines based on geolocation information shared between employees.

Social apps

Geolocation has also become an integral part of many social apps allowing users to leave digital markers as they use restaurants, hotels, and bars so that they can  rate their experiences and leave comments for other customers. This also provides increased levels of user engagement as most recently exampled in the huge success of Pokémon Go which showed the possibilities of augmented reality making old forms of advertising suddenly come alive. The same technology can be applied to museums, galleries and other architectural spaces to create virtual tours and even help people negotiate other public facilities such as hospitals or government buildings.

big data apps

Summing up

Geolocation and its various applications are constantly improving, just as are the analytic tools used to interpret and apply the information produced by it. However, it is worth mentioning security concerns that are inevitably produced by the collecting and use of such data. In this regard we should only ask for information that we really need and we should be always transparent about how and when it is to be used. In this way users can always feel safe using our products and can make informed choices on whether or not to disable location on their app.

Want to know more about Espeo? Read about our services HERE.

See also:

Categories
Uncategorized

Machine Learning App: How To Implement AI & ML into your App

In recent years Artificial Intelligence, Machine Learning and Augmented Reality have taken mobile app development by storm. When it is reasonable to build Machine Learning App? With Apple and Google both encouraging and making it easier for developers to use these technologies, businesses can vastly benefit by increasing user satisfaction and engagement by utilizing AI and ML.

Are you wondering if you can implement AI for your business?

There are numerous uses for AI in web and mobile applications. The main goal is to implement a deep learning process into your app to recognize patterns and then apply these ‘learnings’ to solve various complex queries. Here are the most common uses of AI and ML for businesses.

Learning user habits

AI is great for dealing with complex data like analyzing preferences. Building products with user experience in mind is a priority for modern applications. Appealing visuals are not enough to keep your user base happy, but AI can help with that. While most people do not bother to customize or personalize their apps small things like choosing which screen appears first or discovering what color theme is the most popular, can make the user feel that the app is designed specifically for them. Apps where the user has to go through many steps to complete a task can also easily use AI to make it faster or reduce the cognitive load on the user.

Recommendations

We already have AI recommending products or services to us on a daily basis (i.e. Netflix, Amazon) and this is all thanks to algorithms. Learning what a specific type of user (based on age, gender, location, previous purchases etc.) usually buys is a good way to predict the best options for them without having to use annoying and badly targeted marketing. Knowing what someone’s preferences are helps to facilitate ease of use and keeps them engaged for a longer period of time.

This method works extremely well for entertainment apps or those that sell products, meaning we can guarantee that all new content will get to the right people.

machine learning app

Face recognition

Current mobile devices are now able to use the complex data of a human face to recognize who a person is. The correct algorithm and a large enough selection of a persons pictures can provide a high degree of accuracy using this method. This can be used for both fun and security. Although locking a device with a fingerprint is currently more secure than 2D face recognition as AI gets smarter and faster, 3D face recognition will be utilized by more applications to work along with, or replace completely, fingerprint scanners.

Making everything easier

The amount and sophistication of smart devices is constantly growing, controlling lights, heating and air conditioning systems and refrigerators, to name but a few, but it can be a little bit of a hassle individually adjusting all these. Smart home products and systems can incorporate AI to work ‘with’ the user and not just ‘for’ the user. Our phones can become our personal assistants by setting optimal temperatures, turning lights off when we fall asleep or reminding us that we don’t have milk when we are shopping. Further, Speech Recognition allows us to learn applications quickly and interact with other devices around us more easily.

Mobile camera

Computer vision is constantly improving, mostly thanks to Machine Learning. The most common combination of these two features are apps that recognize people, everyday objects like lamps, text or even works of art. Everything from scanning barcodes to detecting facial expressions on photographs works faster and with more precision using Machine Learning. Camera applications can add filters on photographs and videos by detecting and tracking certain points. We can interact with phones via gestures because it learns and detects them. Every application using a camera can be better and more engaging for the user with computer vision.

machine learning applications

Summing up

First impressions in app sessions are crucial for retaining new customers. With AI learning the behavior and preferences of the user you’re much more likely to make these sessions better and more memorable.

All the data companies get from their customers is extremely valuable and should be used to not only improve the user experience but increase the chances of future business.

It is also worth noting that AI can be used to solve staffing problems where certain kinds of work can be fully or partially automated.
Consequently progressive businesses are very quickly integrating AI into their mobile and web applications to create useful apps for their customers. As such AI is a highly exciting and lucrative area to be involved in.


Check out how we can help on your next Machine Learning App!

Want to know more about Machine Learning App and our recommendations?! Read this post: Al and machine learning Apps: What can we learn from big brands
[contact-form-7 id=”13387″ title=”Contact download_8_reasons”]

Categories
Uncategorized

3 Common Mobile App Performance Problems and How to Avoid Them

Why is the issue of mobile app performance pushed aside by their creators? Why is the short path most frequently chosen with regard to developing a mobile application? Why does this path lead to enormous costs and, in consequence, hinder the software development process?

The topic might seem very extensive. It’s probably difficult to master it and pinpoint the most important aspects while planning mobile application programming processes. Over the last few years, I’ve worked on both large and small start-up projects. As a programmer with several years of experience under my belt, I would like to discuss a few problems related to the effectiveness of mobile applications and propose some solutions.

Table of contents:

  1. Mobile App Performance – Black box
  2. Devices
  3. Networking
  4. Third parties
  5. Summary
Mobile App Performance

Mobile App Performance – Black box

Let’s assume that an application is a black box. For now, let’s ignore the question of its category (games, business, education, lifestyle), as it’s not really important at this point. Moreover, let’s assume our application is written natively for a given mobile platform (e.g. iOS – Swift, Objective-C, Android – Java, Kotlin) with the use of the best software practices and project templates. I believe that if you’re considering software efficiency it’s pointless to go into the details of cross-platform solutions as e.g. Xamarin or hybrid ones using HTML5. That’s even if, in the case of simple software, we can assume that the efficiency of a solution based on Xamarin will be comparative to the native language.

I’m aware of the fact that I won’t be able to discuss all aspects of the efficiency of mobile applications and the factors shaping it. However, I’d like to focus on the most important ones.  

 
mobile app performance issues

Devices

The first and probably the most frequently forgotten factor concerns the devices themselves. Depending on the platform and version of available software, it’s useful to put together a list of devices on which the software will ultimately be installed.
Those devices not only determine the user interface and later ways of showing data, but mainly how particular software layers will operate on older mobile devices. These can include devices with worse units (weaker processor, less RAM). You should also consider the availability of the devices, especially those older ones. Most frequently, programmers use simulators, additionally one or two mobile devices. This should be a warning signal for testers to start their tests with the oldest devices.

Negligence can lead to an expensive rewriting of functionalities which operate incorrectly on particular devices due to efficiency reasons. In any case, this doesn’t justify the programmers, who often copy the wrong project templates out of laziness, and start the applications only on the newest devices – ones that deal with processing complicated operations without any problems. In such cases, we usually learn about efficiency-related inconveniencies from the final user.

mobile app networking

Networking

Another point comprises networking and, in particular, when and how often the application uses the Internet connection. The most frequent errors directly affecting performance result from the app asking the server for data too often, or a bad structure of storing the data in cache. Here, the best solution turns out to be planning to generate data well, whenever it is necessary, and caching server answers.

Data-generating operations should be executed asynchronously – by not blocking the main thread, which is responsible for rendering the user interface. While downloading images, one should remember two things: to save them on the hard disk and about proper compression.

Moreover, it’s also worth ensuring that the application operates well offline, unless it’s not required in the specification included in the documentation. From my experience, problems sometimes occur due to a lack of explicit information that the application is to operate offline. Sometimes, re-developing an already complex application can be very risky, as this can generate additional errors (which are difficult to solve). I think that this problem concerns developing the layer of communication with the server in business more so than in games, which, as can be assumed, should operate offline. By ‘offline’ I also mean a poor Internet connection, such as 3G or EDGE, which isn’t always 100% sufficient.
We should also consider the effectiveness of the server’s communicative layer.

It’s particularly important when our application generates high traffic of questions regarding the server part. The problem can be further complicated due to e.g. audio or video streaming. Unfortunately, in this case, we don’t always have a direct impact through ongoing development. Nevertheless, I think it’s good to have this in mind as well.

Third Party Application

Third parties

The third point involves the use of libraries of external companies. This has become very popular recently. Anyone who’s dealt with a large project that involved libraries which weren’t updated on an ongoing basis (especially the open source ones!) will know what I am talking about. They facilitate the development process and accelerate it, especially if they’re complex. They provide functionalities that would usually take a lot of time to be written by a programmer from scratch.

The development itself can be supported with additional devices. These can enable proper monitoring – of the efficiency of application, occurrences of breakdowns and an app’s sudden closing, or additional logging of application’s events. Such devices include e.g.: Fabric, Crashlytics, Flurry, HockeyApp, AppDynamics, New Relic. They should be added and used from the beginning of the project.

Summary

To sum up, we should remember that all elements listed herein make a whole and ultimately determine how the application is seen by the final user. The efficiency influences the user interface as well as their general feelings related to using the application. Therefore, we should not let them feel the need to immediately uninstall our newly developed software or, even worse, feel that they have an old phone and they should replace it.

What to know more about tools that can help you improve the effectiveness of your mobile apps. Read this post Time is Money – Web Application Performance for Business Success

Categories
Uncategorized

Big Data technologies at Confitura conference

Confitura fascinates me every year. So many great talks, and this year was definitely the strongest one so far, especially in terms of Big Data technologies. I always thought it was the paid conferences that attracted the top speakers. I was wrong. Confitura has shown that a free entrance can guarantee the same level of quality as a paid one. In this case, I would say the level was even higher. Why? Just take a look at these presentations.

Sławomir Sobótka: C4 – a light approach to architecture documentation

I was pretty excited to attend to this talk, and I wasn’t disappointed. It seemed like he was describing me personally. He pointed out how many mistakes every developer makes. Thanks to this presentation, I realized how important it is to include a short description of why a given technology stack has been chosen into every project.
For my current project, I’ve chosen Cassandra as a database, and Apache Spark as a tool to filter huge amounts of data. In CONTRIBUTION.md, I put a long description of why Cassandra has been chosen. Since it doesn’t have JOIN and GROUP BY it might be really hard to understand how it works properly. Thanks to CONTRIBUTION.md, each new developer now knows how to use it. Additionally, it’s good to show some use cases, your thoughts why you’ve chosen this particular technology stack and not another. It could prevent many mistakes or inaccuracies in the future.
The presentation is available here [PL] https://youtu.be/T12Fdqf6ReQ?t=7h33m10s

Maciej Próchniak: Streams, flows and storms – How not to drown with your data

Such a nice guy to listen to. After his presentation, I realized how much better Kafka is compared to other message brokers. I can’t say much about Apache Flink and Kafka, because I’ve only used Spark Streaming before, but check out the video I attached below. The presentation is very professional, and I really wanted to mention it.
Presentation available here [PL] https://youtu.be/RFstLZc_2y8?t=1h34m34s [EN] https://www.youtube.com/watch?v=-L_Rc6ElqJ0

Andrzej Ludwikowski: Cassandra – Lessons learned

This presentation confirms my opinion that we chose the right database for one of our projects. It’s based on time series, and it works in connection with Kafka and Apache Spark. As I wrote before, this database has no JOIN and GROUP BY and Andrzej confirmed my belief that the way we store data in this database and maintain data consistency is the right way indeed. Data duplication in Cassandra is ok, you don’t need to care about redundancy. Nowadays, SSD disks are relatively cheaper than RAM, so whether you have 100GB of data or 300GB – it costs you nothing. When you have 1GB of data, and no redundancy, you must do joins – it costs money. You add more RAM. RAM is much more expensive than SSD disks.
This is the clue. The video is not available yet, but hope it will be uploaded soon. Such a good presentation.

Grzegorz Piwowarek: Javaslang – Functional Java the right way

Each Java programmer should definitely start using http://www.javaslang.io. As a Scala programmer, I was really surprised that Java finally has the same options as Scala has, available though this library. For example, Optionals with the Guards:
Match(optional).of(
   Case(Optional($(v -> v != null)), "defined"),
   Case(Optional($(v -> v == null)), "empty")
);
By using it with Try you can, for example, handle each error using if statement in a nice, functional way.
A result = Try.of(this::bunchOfWork)
   .recover(x -> Match(x).of(
       Case(instanceOf(Exception_1.class), ...),
       Case(instanceOf(Exception_2.class), ...),
       Case(instanceOf(Exception_n.class), ...)
   ))
   .getOrElse(other);
The video is not yet available either.
Thanks to Grzegorz, I found a really cool library. This is the thing about every IT conference. Sometimes you need just a couple of minutes to find a new way to solve an issue. Other times, you find a new library, or you meet a great new speaker. And as Confitura has shown – you don’t need to pay for this knowledge. I’ll be on the lookout for Big Data technologies news (and you can read a bit more about Big Data from me here). I apologise for not mentioning anyone else, but it’s impossible to be on each session if there are 5 concurrent ones!