Tag Archives: Mobile

Keeping up-to-date: Mobile security & Native UI

To catch-up on the latest mobile security and native UI trends, the Uniface mobile development team recently attended the appDevcon conference. A conference by app developers, for app developers. An event which targets developers for Apple iOS and Google Android, Windows, Web, TV and IoT devices in multiple tracks.

In advance, we were especially interested in two main topics: smartphone security and sharing code between web and native apps.

Mobile security

The mobile security presentations were given by Daniel Zucker, a software engineer manager at Google, and Jan-Felix Schmakeit, an Android engineer also at Google. In their – in my view – impressive presentation, they confirmed what I already thought: securing mobile phones is not something which you do after you have designed and developed your apps. It is a key area of app development to consider in advance.

Securing mobile phones starts with a good understanding of the architecture of at least the Android and iOS platforms. How is it built up? For example, as Android is based on the Linux kernel, you get all the Linux security artefacts, like Process isolation, SELinux, verified boot and cryptography. While some security services provided to mobile apps have a platform specific nature, others are platform independent.  An example of the first one is the new Android Permissions, which have now become more transparent to users, as they now get permission requests ‘in context’. An example of the platform independent security artefacts is the certificate validation, which done in an incorrect way, would still make your app vulnerable.


Native UI

Sharing code between native and web apps promised to be an interesting session. Some context: mobile users tend to spend significant more time on native UI enriched apps than on web apps, while web apps are attracting more unique visitors than native apps, as web apps are more widely approachable using different devices.

The best way to share code between native and web apps is simply by writing them as much as possible in the same code. Of course! But how do you do that? In this session the solution was to write fully native apps using a mix of NativeScript (an open-source framework to develop apps on iOS and Android platforms) and AngularJS (JavaScript-based open-source front-end web application framework). These native apps are built using platform agnostic programming languages such as JavaScript or TypeScript. They result in fully native Apps, which use the same APIs as if they were developed in Xcode or Android Studio. That is quite interesting! So using JavaScript you can develop fully native apps. That sounds like music to my ears.

Looking at this trend, it promises a lot. The mobile community seems to put a lot of effort in trying to simplify the creation of fully native enriched apps using plain JavaScript and HTML5 functionalities. Until now, we support our users in creating native/hybrid apps with fully native functionality with our Dynamic Server Page (DSP) technology. As we are looking into ways to enrich this technology further, we will follow the developments on this trend as it is fully in-line with our philosophy to share code between applications (client-server, web and mobile apps) and to support rapid application development, which saves our users time and resources in developing and maintaining fully enriched and cool applications. 

 

Attending a cloud infrastructure training – A truly AWSome Day in Amsterdam

Last week I attended, along with a few other Uniface software engineers, the AWSome Day Amsterdam event, organized by Amazon Web Services (AWS) – the world’s largest provider of cloud infrastructure services (IaaS). The event was a one-day training in Amsterdam delivered by AWS technical instructors. More than 300 (maybe even 400) people attended the event. It was very crowded, but a very well-organized event.

From Uniface, a few people from the cloud, mobile and security teams attended the event, each with their own project in mind.

The interactive training provided us with a lot of information about cloud deployment, security and usage for the web and mobile environments. The focus was on AWS as a provider of cloud infrastructure services. In a nutshell, technical instructors elaborated on the following:

AWS infrastructure with information about the three main services they offer:

  1. Amazon Simple Storage Service (S3) to store objects up to 5 terabyte in multiple buckets. This service includes advanced lifecycle management tools for your files.
  2. Amazon Elastic Cloud Compute (EC2) which offers virtual servers as you need. EC2 has advanced security and networking options and tools to manage storage. Also very interesting, you can write your own algorithm to scale up or down to handle changes in requirements or spikes in popularity, to reduce costs and improve your efficiency.
  3. Amazon Elastic Block Store (EBS) which provides persistent block-level storage volumes that you can attach to a single EC2 instance. Interesting is that EBS volumes persist independently from running life of an EC2 instance. You can use EBS volumes as primary storage for especially data that requires frequent updates and for throughput-intensive applications that perform continuous disk scans. EBS is flexible, in the sense that you can easily grow volumes.

 AWS Event

During the event we discussed extensively the security risks, identity management and access functionalities. But also the usage of different databases (SQL vs NoSQL) together with the cloud services. Interesting topics discussed at the event were concepts such as Auto scaling of EC2 instances, Load Balancing, and management tools such as CloudWatch and AWS Trusted Advisor, which seems to be very useful to track security and costs issues.

Uniface Attending AWS Event

In general, the event has broadened my view on cloud deployment using AWS, but also using other cloud infrastructure services as the same concepts can be applied to other cloud providers. 

It was truly an AWSome Day in Amsterdam!

When is the best time to plant a tree?

When is the best time to plant a tree? According to a Chinese proverb it’s 20 years ago. The second best time is now.

As Uniface developers we know this is true. Most applications written in Uniface originate from 20 years ago. And they are still alive and kicking. Well, I am not sure about the kicking part, but they are certainly alive. But I want to build new applications today. I am sure we all want to.

In previous blog posts I told you about my worries. Some of you replied, or sent me an email. Thanks for that! You told me about these frameworks that existed in the mid-nineties. A good and sound framework is an essential building block 🙂 for fast application development. It’s the foundation of applications, but why should we invent the wheel over and over again? I would rather spend my energy on programming algorithms and code business logic.

But let’s be honest, we need more. I mean more frameworks that can be used to build mobile applications or at least fully responsive web applications with DSP’s.

There are hundreds or thousands of excellent Uniface developers out there. And we need a working space where we can meet and join forces. What if such a place would exist? Where we could create nice tools, examples, pieces of proc code or even a complete framework? Wouldn’t that be great! Let’s join forces and start a new community and have this working space. Interested? I have a plan….

Community

I want to organize a new Uniface developers community. The goal of this community is to build, maintain and share Uniface components. And I am searching for developers to participate. A few assumptions:

  • Let’s start small, with a few developers. Not more than a dozen.
  • It’s an online community, so it doesn’t matter where you live, work or which timezone you’re in.
  • We will communicate in English. My English is not the best, but I try. I am sure we all can.
  • The community and the products are independent. So, the software we create or documents we write are owned by the community.
  • Participation is on a personal basis. So you don’t represent your employer. Not even when it’s Uniface. 🙂
  • Everything we create, we will share for free and is open source. I will write a post about open source in the near future. Because it’s not what we are used to…
  • Last but not least. We will work independently and local most of the time. But a community is about teamspirit. Especially in the beginning. We don’t have to be friends, but we need to respect each other’s opinion.

Rocket science

The community is going to build Uniface components. Of course I am talking about Uniface 10. We will start with some nice examples. That’s also the best to get used to the environment.

All of us know how to build nice applications with Uniface. I don’t know if you have any experience with version control, creating mobile apps or Uniface 10. But I am sure community based development is new for us all. So, at certain points it’s going to be trial and error.

Before we can build anything we need to setup an entire environment where we can work together. Think about the architecture inside your development department, but then completely online.

There is already a complete online environment. All that is missing, is you!

Want to participate? Please send me an email (lammersma@hotmail.com). Don’t worry about the technical stuff. It will be explained to you!

 

Uniface mobile – Custom Cordova plugin support

Some would have noticed that this week has seen the release of two new Uniface patches – G302 for 9.7.02 and F102 for 10.2.01. Normally I wouldn’t post about a patch, however, this time, there is something new that has been included that I would like to share with you. It is now possible to include custom plugins into your mobile app.

In 9.7.02 we introduced the ability to access the Buildozer online build services to compile iOS and Android apps. Included in this integration was the facility to select, from a predefined list, a number of plugins to be included and made available, in JavaScript, to your DSP application. The latest patches have increased this support to enable you to also include plugins from third parties or ones you have created yourself.

Looking in the development environment with the application shell type set to Mobile you will see it is possible to set the mobile app’s properties. With these patches, a new field has been added to the properties screen that allows you to specify one or more public (git) repository where the plugins reside. Now, with the plugins selected in application startup shell, you can submit your app to be built and, as part of server processing, the plugin will be downloaded automatically and included within your project.

Mobile app definitions
Mobile app definitions screen

As an example, we have been asked for the ability to interface with Bluetooth to print a label on a wireless connected printer. A quick search on Google (for Cordova Bluetooth plugin) offered me several options that seem to fit the bill one of which, picked at random, is https://github.com/evothings/cordova-ble. If I was to include their repository (https://github.com/evothings/cordova-ble.git) in my Uniface definitions, before building my app, I would be given access to the device’s Bluetooth capabilities using the documented API.

The Uniface G302 and F102 patches also include the latest documentation which has been updated to include this topic.

Uniface Training Modules offer more Flexibility

With the development of faster and even better Uniface software there was clearly a need for better and more flexible and efficient Uniface education and training. With the release of Uniface 9.7 the training materials were revisited, redesigned and partly redeveloped. The input from many Uniface consultants during and after the train-the-trainer session, conducted in October last year, seemed invaluable.

The training materials have been developed in a more modular way to even more meet the needs of our customers and enable a more flexible delivery. Three tracks have been defined. The courses can be delivered as classroom training or over Web, using the CloudShare® platform.

This blog briefly describes the available tracks and modules for these trainings.

After having successfully completed the two days Uniface Essentials, there are three options. Each option takes three days to be completed.

Uniface Training Modules

  • The Uniface Essentials training focusses on the model-driven and component-based development and will equip students, new with Uniface, with the necessary basic skills to develop software applications with Uniface. Students will be prepared for the next module. The Uniface Essentials module is a prerequisite for the Uniface Mobile, Uniface Web, and Uniface Client Server training.
  • With Uniface Mobile students will learn to develop responsive applications that can be deployed on mobile devices and tablet computers. Attention will be paid to some supportive frameworks for building responsive applications.
  • In the Uniface Web development class students are taught how to develop Uniface applications by building Dynamic Server Pages for the Web. All aspects of stateless software development are covered in this course. Some attention will be given to HTML5, and CSS3.
  • Uniface Windows Client means building application for the Windows platform.

For each module students are encouraged to make a number of exercises to become more acquainted with the specific topics covered in the training modules. There will be enough time to ask questions, for discussion, and the exchange of ideas and information to optimize the learning process.

Besides these trainings, where students will learn the basic skills, more advanced topics and techniques can be covered in custom made trainings. These customized training are delivered on customer demands only, and can be geared toward specific customer situations.

For questions, comments or remarks about Uniface training please contact uniface.training@uniface.com, or download this fact sheet with more information.