Okode review

Okode review

At Okode we have a motto: rather than reducing the number of failures we must concentrate on reducing the average time between failures. It is evident that in a changing ecosystem, where the technology of yesterday little (or nothing) has to do with today’s, we can not achieve perfection since many factors are not within our reach in a reasonable time. Our customers value much more that we concentrate on being perfect by detecting fast and quickly bugs than having any (absolutely any) bug when we publish our Apps if this implies delays in the release.

However, this should not lead developers to relax and make mistakes, it is rather a philosophy for which we decided to prioritize more the detection and correction of bugs while trying to prevent them from appearing.

And last week we decided to have a break for a moment to talk internally about prevention issues in a monographic session of code review with every developer. And that’s why we call it Okode review.

We had the opportunity to review things such as:

  • Principle of sole responsibility: The idea is that a class / module should only have a reason to exist. It is more difficult than it looks. Normally, this principle should also be applied to the methods. A small rule would be that if we have to use “and” to describe what a class does, surely we are not applying the principle of sole responsibility well.
  • Open / Closed Principle: If we are working with an object-oriented language, are the objects open for extension and closed for modification? What happens if we need to add another “foo” ?.
  • Duplication of code: Basically refactor when necessary.
  • Patterns / Anti-patterns: This point will be given by the experience, but if we already know our project we can try not to stumble twice.
  • Names of variables and methods: Choosing the righ name of the classes, variables and methods is fundamental to allow the code to be correctly maintained by ourselves or by other developers of our team.
  • Readability: Is the code easy to follow? Have we had to pause the review to decipher it?
  • Coverage: Especially in new functionalities. Do the tests cover all the code? Are fault conditions covered? Are the tests easy to read?

Develop Apps with Flutter

Develop Apps with Flutter

It’s amazing how productive it can be to develop Apps with Flutter. The live reload mode is ultra fast and is very well integrated in Visual Studio Code.

Developing with Flutter and Visual Studio Code from Okode on Vimeo.

And yes, it is true: the user interface is rendered in its own native view without the need to use widgets from the native platform.

For those who are not familiar, Flutter is an open source mobile framework created by Google, based on its programming language, Dart. In February 2018, Google demonstrated the first beta version of the Mobile World Congress, and in May, it presented the third version in its I / O event. Currently Flutter is released in version 1.0 since the end of 2018 and is available for iOS / Android multiplatform development officially.

The reasons why Flutter increases the productivity of the multiplatform Apps development are:

Accelerates the developer’s workflow. Flutter maintains the state of the application even between modifications and recompilations of code so that when the code is reloaded the state of the App remains intact and the debugging can be continued where it was left. It is practically instantaneous and from the development point of view you can immediately see the changes as well as see the impact that only the most recent ones had.

Write the code only once and operate on multiple platforms. Developing on multiple mobile platforms is a challenge for most companies that create applications and with Flutter you can achieve an almost native result without making efforts for each platform.

The ready-to-use support for Material Design generates an experience of a native App. The Google team has invested in Material Design, its design language that allows you to manage from the animations to the shape and color of a button in the application. Google created a graphical interface library for Flutter to facilitate the rapid creation of a Material Design experience for Android and iOS applications that behave as expected from each operating system.

App Development for Business and Brands

App Development for Business and Brands

At Okode we are convinced that the development of mobile applications must be carried out in such a way that it is not necessary to maintain native code for each platform (iOS / Android).

Hybrid Apps make it easier for developers to work, since it is easy to create a single application that runs efficiently on different platforms without practically any additional effort and taking advantage of all the knowledge that Web designers and programmers already have in the Web-based hybrid technology frameworks. In addition, when necessary it is simple to be able to use the platform’s native functionality through the use of Cordova or Capacitor, allowing the technological innovations introduced by the big manufacturers to be used from hybrid Apps as if they were true native Apps. By developing in this way, the development times are greatly optimized, allowing companies and brands to reach the markets of applications in record time.

One of the most important decisions of this whole process is that you need a framework of advanced and high-quality mobile applications to create hybrid applications. Therefore, it is necessary to choose the mobile framework with prudence. Some of the best Frameworks of hybrid mobile applications for their characteristics and user experience are the following:


Open-source, the preferred app development platform for web developers.

React Native

Open-source, Reusable Components. Developed by Facebook developer. Used by Facebook, Instagram, Uber Food etc. easily integrate native feature with Hybrid.


Open-source, create hybrid-native apps using Dart VM for iOS / Android platforms. Flutter code is declarative, favours composition, and uses a single threading model. Its hot-restart and sub-second hot-reload is truly game-changing.

Progressive Web Apps & Accelerated Mobile Pages

Progressive Web Apps and Accelerated Mobile Pages

The development of mobile applications currently does not mean a binary decision between Native App and Web App: today we have to consider many other alternatives such as Hybrid App, Responsive Web Design, Accelerated Mobile Pages and Progressive Web Apps among others.

Initially the responsive Web design came with the idea of making the content of a website accessible from any type of device. But the final solutions that are developed do not fulfill the perfect adaptation of a site to each type of device. In many cases the problem lies in the adaptation of an existing site to mobile devices without following a mobile-first methodology.

Progressive Web Apps is a new way to create websites for which you want a user experience that combines the best of the Web and the best of the apps, including responsive design techniques, but not limited to them and incorporating additionally all those elements of the native apps that can be used from Web platforms.

Google created the term Progressive Web Apps (PWA) at the end of 2015 to give name to Web applications that are indistinguishable from mobile applications (apps), and thus, promote their development, while establishing the characteristics that a Web must fulfill to be considered within this category.

Some of the fundamental characteristics of the PWA that identifies them include the fact that they can be installed in a certain way on the user’s device allowing users to keep the most useful apps on their home screen without the hassle of having to search for them or install them from an app store since they can perform this operation directly from their standard web browser.

On the other hand, the massive use of the Web from mobile devices makes it fundamental to adapt the same to that type of devices. Not only in terms of user interface design, but also in addition to the fact that the average behavior of users accessing a website from their mobile device waits less than three seconds before canceling the loading of the website page (either partial or complete). This means that the techniques of responsive or even progressive web design are not enough to provide an excellent user experience but it is necessary to improve it with techniques such as the use of Accelerated Mobile Pages (AMP).

In a world where the mobile-first concept is becoming increasingly important, loading speed is essential to avoid losing the user and the mobile presents a greater challenge than the desktop, both for the stability of the connection speed and for the type of use that presents. The user requires fast delivery to avoid frustration and it is more difficult for users to have consideration for the fact that the network conditions affect the loading speed. However, maintaining a good design and some very common elements such as analytics, maps, monetization or integration with social networks can make it difficult to maintain a page with the desired performance.

The AMP project (Accelerated Mobile Pages) is an open project, without lock-in on a specific platform, which was born with the aim of helping developers to create agile and high-performance web solutions. To achieve this, it partially restricts web technologies to a subset of their technologies and with specific tools to cover an important part of the publishers’ needs to expose their information to their users.

Specifically, AMP defines three main components:

  • AMP HTML: HTML with restrictions but extended with specific AMP properties and tags in order to optimize the loading and rendering of AMP pages. A web application may choose to serve part or all of its content as AMP and have or not “non-AMP” versions for desktop or to enable functionality that can not be achieved with AMP technology.
  • AMP JS: JavaScript library that implements good AMP practices, managing the resource load and processing the AMP HTML tags. In addition, it makes optimizations in the HTML and CSS to optimize the rendering and force that all external content is loaded asynchronously to prioritize that the user sees the content as quickly as possible. The base library is responsible for these tasks and you can load specific modules for AMP components such as forms, image carousel, integration with social networks and other more dynamic contents including the integration of external supported players. The Javascript code itself is the biggest restriction that AMP imposes since in its beginnings it was detected as the main cause of performance problems. Only what they identify as “expressions” before user events are allowed (for example, by clicking on a button) and the set of valid operations is restricted.
  • AMP Cache: It is possible to further optimize access to content using services such as Google AMP Cache, a specific CDN for AMP content and providing you with a complete delivery layer to implement a four-layer architecture. This CDN, in addition to serving the content with the latest web protocols such as SPDY and HTTP / 2, validates that the content is really AMP fulfilling the expectations and makes transformations in the HTML as the sanitization of tags to avoid XSS attacks or the insertion of tags for pre-fetching.

2019 Technological Trends

2019 Technological Trends

Market research company Gartner, IT expert, published in the Symposium / ITxpo meeting one of the most complete lists the trends to pay attention to, where Artificial intelligence stands out, the Internet of things or the Edge of computing.

1.Autonomous things

Autonomous devices (AuT ) such as robots, drones or autonomous vehicles are within this category, defined as the use of artificial intelligence (AI) to replace functions previously made by people. This new autonomy explores Artificial intelligence to develop advanced behaviors that interact in a way similar to humans with the environment.

2. Augmented analytics

Analytics will increase is a report that will be published for the first time in Gartner’s annual report for 2017. This new capacity of data analysis to automate information through intelligence increase integration with Big Data and data mining, revolutionize the way to develop, share and Consume the analysis of the data.

3. AI-driven development

AI-driven development analyzes the tools, technologies and best practices for integration of AI into applications and their use to create AI-based tools for the process of developing. AI capabilities are transforming development to the point that the developers themselves are already are able to function independently by using predefined models, without having to collaborate with data scientists, well, Gartner predicts that by 2022 at least 40% of the new projects will application development will require them in the team.

4. Digital Twins

Digital twins are the digital representation of a real world entity or system. Gartner estimates that by 2020 there will be billions of them to monitor the behavior of more than 20,000 million connected sensors and endpoints. The consultant points out that there will also be digital twins for billions of these solutions, with the order to monitor their behavior.

5. Edge computing

Perimeter computing is applied above all to the Internet of Things and consists of the location of points intermediate between the connected objects in order to process information and perform other tasks more physically close to the sources of the information, to optimize the response time and reduce the traffic. Gartner expects an increase in the incorporation of Artificial Intelligence chips in devices perimeter Its wide application in a variety of devices from industrial to screens, telephones smart, automotive …

6. Immersive technologies

Virtual Reality, Augmented or Mixed, Conversational Interfaces, etc … will provide experiences more immersive through the incorporation of additional sensory characteristics. This potential will allow new immersive experiences capable of detecting forms, tracking position, interacting, what will allow companies with products and services a new interaction experience through the incorporation of additional sensory characteristics.

7. Blockchain

The Blockchain, one of the technologies with the most potential, will continue to grow and expand due to the new profits that are being explored, and not only in the financial sector, since it is beginning to be applied in the industrial sector, which is transforming. Its growth is estimated from 4% to 60%. The upward trend of this technology can generate a bubble, as Steve Bozniak pointed out, then allow a normalization in the application of the blockchain.

8. Smart Spaces

Smart spaces are digital or physical ecosystems where the interaction between people and / or systems in collaboration with technology, they interact in connected environments for a more immersive experience, Interactive and automated. These spaces are monitored with technology that measures and collects the behaviors with analytics to know the statistics and behaviors of the users, ratios, segmentation etc …

9. Digital ethics and privacy

Ethics and privacy are a growing concern for individuals, organizations and governments, so that a greater focus on compliance and mitigation of associated risks is expected, to protect personal information.

10. Quantum computing

Advances in quantum computing can lead to accelerated research and problem solving in many industries, from financial services and insurance to pharmaceuticals, defense and automotive. It is a type of non-classical computing that operates in the quantum state of subatomic particles that they represent information as elements called quantum bits (qubits).

Chat Widgets

Chat Widgets

The Web is an open platform that allows creating user experiences that adapt to all types of channels. The integration of Chat Widgets into existing tools such as WhatsApp creating interfaces similar to those offered by the Apps and even being based on the same common code when it comes to Hybrid Apps. Is an interesting experience that can be exploited in the future to minimize costs, communication development and multichannel interaction merging Chat, Web and Apps channels in an intelligent way.

We all know the chats. Applications such as WhatsApp, Telegram, Slack or Messages that include text media embed images, icons, links or videos among other types of messages. A chat widget is an enriched element of user interface, interactive and that is integrated in a natural way with the rest of the chat conversation is enriched in a much broader way than what you can use text or images in general.

Chat Widgets and a Dashboard with two different objectives

Build and validate a set of Web functional modules that can be used to improve communication  end customers through different channels based on social networks or chats. Our idea has been to create Chat Widgets as rich and interactive elements of the user interface and that would be integrated with the rest of the messages in the chat conversation, making it possible to enrich it better than the simple text or images in general.

Have a tool where the available templates of Chat Widgets are displayed in a visual palette of widgets accompanied by the relevant user information such as personal data, hiring data, latest services used and other useful information. The Chat Widgets are available from a preconfigured list of types of widgets (templates) that when being “dragged and dropped” on the chat are automatically instantiated in the user interface of the final client.

Next Steps

Use the context information to assist in the selection of the most appropriate Chat Widgets templates according to the case in each case, applying automatic techniques where bots can interact with clients and select the Chat Widgets without human intervention.

Demo Day
Industry: Insurance
Tags: Web / Mobile / App

Welcome to the Digital Revolution

Innovate for a Better Future.

We are an enterprise leadership in Mobile Business Application Development. As a technology-based company we’re specialized in innovative global solutions for international customers in different sectors such as insurance, banking, marketing, communications and logistics.

We have a highly specialized team of full-stack software engineers, which allows us to start agile application developments immediately, regardless of the technology you needed. We make technology migrations, creating minimum viable productos and helping to expand the experience and the ability of our customers development teams so that they are able to maintain their solutions in an environment of permanent continuous change.

Digital Transformation is not an option, is the strategic opportunity to incorporate new technologies so that your business is more efficient and allows new opportunities.

Effective Digital Transformation Strategy

Digital Transformation for Insurance Companies.

We are an enterprise leadership in Mobile Business Application Development. As a technology-based company we’re specialized in innovative global solutions for international customers in different sectors such as insurance, banking, marketing, communications and logistics.

We have a highly specialized team of full-stack software engineers, which allows us to start agile application developments immediately, regardless of the technology you needed. We make technology migrations, creating minimum viable products and helping to expand the experience and the ability of our customers development teams so that they are able to maintain their solutions in an environment of permanent continuous change.

Digital Transformation is not an option, is the strategic opportunity to incorporate new technologies so that your business is more efficient and allows new opportunities.