Tag Archives: app

Uniface Mobile Supporting Latest Operating Systems

Last month, the Uniface mobile team added support for the latest mobile operating systems (OSs) available in the market. Since both Apple and Google have released new versions of their latest OS, we wanted to make sure that Uniface mobile apps can be run and deployed on them.

So from now on, Uniface customers can run and deploy their mobile apps on Android OS versions from 4.4 up to Android 8.0 Oreo and on iOS from iOS 8.0.0 to iOS 11.0.0. To take advantage of the support for the new versions, all that customers will need to do is recompile their apps using Uniface and Buildozer.

For us, adding support for the latest mobile OS means making sure that a Uniface mobile app successfully runs on all these above-mentioned OSs and a Uniface mobile app can be deployed on these OSs. If a mobile app is not compatible with a mobile device’s OS then Google Play or the App Store would filter the app from the ‘app to install list’ making it difficult to deploy on that device. To verify these scenarios, we developed our own mobile app and tested it on all the platforms in the product availability matrix.

The Uniface previewer app’s latest release is an example of a Uniface mobile app which can be run and deployed on iOS 11 and Android 8.0.

Uniface Previewer app
Uniface Previewer app

I would also like to mention that now we have made our apps forward compatible for both Android and iOS. To illustrate, here is an example:

  • a Uniface app is built and deployed on O.S ‘x’
  • a user device goes for a system update
  • this results in upgrading the OS to ‘x+1’
  • the Uniface app would continue to work on the later OS.

Personally, I really enjoyed working in this project. This gave us a better insight of a mobile app development and deployment cycle. We hope our customers find this as useful as we do.

Technology Highlights Google Cloud Next 2017

Google cloud next-2017 The largest Google developer and IT gathering in Amsterdam to explore the latest developments in cloud technology. A chance to engage with the foremost minds leading the cloud revolution and learn how the modern enterprise is benefiting from the latest in cloud technology in unprecedented ways. As usual for us one more way to keep up with technology.

We saw some very interesting new innovations (spanner and app maker to name two) and how they relate to application development in the cloud.

Given below are the other highlights of the technologies talked about during the event:

1) Microservices & Kubernetes:

Microservices – is an architectural style that structures an application as a collection of loosely coupled services, which implement business capabilities. It enables the continuous delivery/deployment of large, complex applications and enables an organization to evolve its technology stack and can develop and deploy faster. It’s an evolution of software development and deployment that embraces DevOps and containers and breaks applications down to smaller individual components.

The emerging combination of micro-service architectures, Docker containers, programmable infrastructure, cloud, and modern Continuous Delivery (CD) techniques have enabled a true paradigm shift for delivering business value through software development.

The combination of microservices and containers promotes a totally different vision of how services change application development.

Kubernetes – is an open-source system for automating deployment, scaling and management of containerized applications that was originally designed by Google and donated to the cloud native computing foundation. It aims to provide a “platform for automating deployment, scaling, and operations of application containers across clusters of hosts”. It supports a range of container tools, including Docker.

Technology Highlights in Google Cloud Next 2017

2) Choosing the right compute option in a cloud project: a decision tree

To understand the trade-offs and decide which models are the best fit for your systems as well as how the models map to Cloud services —Compute Engine, Container Engine, App Engine, cloud functions.

Compute Engine is an Infrastructure-as-a-Service. The developer has to create and configure their own virtual machine instances. It gives them more flexibility and generally costs much less than App Engine. The drawback is that the developer has to manage their app and virtual machines yourself.

Container Engine is another level above Compute Engine, i.e. it’s cluster of several Compute Engine instances which can be centrally managed.

App Engine is a Platform-as-a-Service. It means that the developer can simply deploy their code, and the platform does everything else for them.

Cloud Functions is a serverless computing service, the next level up from App Engine in terms of abstraction. It allows developers to deploy bite-size pieces of code that execute in response to different events, which may include HTTP requests, changes in Cloud Storage, etc.

Technology Highlights in Google Cloud Next 2017

3) Big data – Big data refers to data that would typically be too expensive to store, manage, and analyse using traditional (relational and/or monolithic) database systems. Usually, such systems are cost-inefficient because of their inflexibility for storing unstructured data (such as images, text, and video), accommodating “high-velocity” (real-time) data, or scaling to support very large (petabyte-scale) data volumes. There are new approaches to managing and processing big data, including Apache Hadoop and NoSQL database systems. However, those options often prove to be complex to deploy, manage, and use in an on-premise situation.

Cloud computing offers access to data storage, processing, and analytics on a more scalable, flexible, cost-effective, and even secure basis than can be achieved with an on-premise deployment.

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 9.7 WEB: When business rules

Guest contributor Dino Seelig (Uniface Business Partner) talks about his first impressions of Uniface 9.7

Last week I visited the Uniface Lab. The goal: getting informed about connecting WEB apps using Uniface DSP’s.

Building an app, using an off the shelf frame-work, integrating the power of Uniface service was for me a wish for many many years.

Communicating from a WEB app with a Uniface server using a HTTP request was not that hard, but something simple like: “leaving this field validate of the value of this field is a valid key” was still a lot of work. Setup an event listener, pickup the event fired, post an request over HTTP, handle the response, and so on.

With the introduction of Uniface 9.7 the javascript library Uniface.js simplifies the number of actions. The Uniface 9.7 way: create using javascript a new instance of your Uniface component, activate your operation using params and get your result makes life easy. The power available in Uniface Client/Server becomes now a part the web environment. Not bad. Implementing requirements like “can you calculate the sum? can you switch value when? can you hide show when?” are not time consuming anymore.

Is that all? No there is more. The lab switched from promise driven to quality driven delivery. In the past, the timebox (4 months) was used for to deliver the communicated promises. However the time box is not changed. The vision is. They will spend the time needed to make it excellent. That for me is the best promise to move to 9.7. Uniface is back on track simplifying complex things and shorten the time to delivery again.

Dino Seelig

Dino Seelig
Dino Seelig


The Future of Programming May Not Involve Coding (Part 2)

By Bola Rotibi, Research Director, Creative Intellect Consulting

Part 2 in a 2 part series: Read Part 1 Here

Developers: I’m better than you and I need my code

The most significant barrier to adoption has perhaps been the developer. Within the development community there can be a snobbery about writing code. A hierarchy of developers often exists in which those who are closest to the metal are better developers. So a C++ developer is far superior to a JavaScript developer. Therefore a developer who writes no code at all is perhaps not even a developer. Aside from this unofficial cast system there has always been a desire amongst developers to write code. Becoming a developer to not write code is like choosing to be a racing driver and not driving a car.

Finally there is the niggling suspicion within the minds of developers for whom the low-code approach might be appealing is that a requirement will come along that cannot be fulfilled. If you are writing the code then this is highly unlikely to happen, any requirement can be met. This has been true in some cases such as the early days of .NET when developers discovered that something which was possible pre-.NET was not possible within the framework. Anyone who remembers the challenge of needing more than one form in an ASP.NET page will know what I mean.

These issues, in many cases more emotional than real, have managed to drown out the many sensible reasons for adopting low-code development tools. Had software development been any other part of a business it probably would have shifted to this approach many years ago as the business case for it is overwhelming. But, within IT the old guard of developers has stemmed the tide and most development today, especially within the enterprise, still means many, many lines of code being written, tested, deployed and maintained.

The rise of a new breed of developer

Just as technology has changed so has the developer. The 2015 Stack Overflow survey found that the average developer does not have a computer science degree (almost half are self-taught) and has only been coding for 2-5 years. They are a product of the micro-service, API, framework, born-on-the-web world. These are not the Fortran or Mainframe or even Visual Basic guys of old. The most popular language in the survey was JavaScript with C#, PHP and Python beating out C++ and C. The main driver for this generation is speed and technology choices largely flow from that.

This is highlighted by many of the new coding bootcamps that have sprung up. These are very short training courses in which people with usually zero coding experience learn how to develop in a few weeks. In order to operate in these timescales they choose technologies such as Ruby on Rails or Node.js simply because the more traditional technologies take longer to teach.

Then there are the micro-service based applications often built on Platform as a Service such as Heroku or Cloud Foundry. These are also popular with the bootcamps because even quite complex applications can just be a few lines of code that knit together a few services. In this world some developers do not even see themselves as developers but merely curators of services. For them the issue of whether they are a “real” developer is irrelevant. Their aim is to create an application as quickly as possible. They would rather invest time in making it a great user experience.

The applications that this generation have been creating are those that have disrupted many traditional industries or notably impacted society in recent years: Facebook, Netflix, Twitter, Dropbox and so on. The result is that now traditional enterprises and SME’s are having to respond in kind. Innovation, agility and time to value are the buzz words in today’s business with respect to IT. Developers are having to change and that includes languages, technologies and tools. We see this reflected in the products that their traditional vendors are producing such as Microsoft and IBM’s PaaS platforms.

The future demands change

Then there is the challenge of mobile and Internet of Things. Whereas for a long time developers just had to worry about building a desktop application (often for a very specific OS) they now have to worry about the web, phones, tablets and potentially many other types of device. Codebases need to be able to serve many different clients. If every line of code is going to be written by hand then building an application that works on desktop, multiple phones and tablets and beyond is going to mean a lot of lines of code across numerous languages, technologies and tools. All of which must be tested, maintained and evolved.

This will push developers, development teams and budgets to their limits. And with speed being an overriding factor the old ways simply won’t work. Coding and creation of applications is opening up to a wider group. The advent of the citizen developer: regular folks building mobile apps in their spare time; or people at work building apps to aid their productivity; the iOS Gold Rush saw many designers begin writing Objective-C in order to push out iPhone apps. Everyone is getting in on the act and they are not playing by the old rules or caring about the developer hierarchy.

This evolution began with the web when many people (such as myself) who had no development background or training became developers at the forefront of technology. That change has accelerated and continues to do so. This is being enabled by and driving the growth in low-code tools and technologies. As I said in the beginning, it is ironic that as governments push for the better training of software coding within the younger generation, the need to actually write code is rapidly diminishing.

Many software application developers should look willingly to embrace this evolution not least because of the act of development is to build to deliver value. Code is a construction asset like bricks are in the building trade. In the building trade, ultimate value comes from the finished product and the way it is architected and the function it delivers. Of course the quality of the bricks also helps to cement that value but at the end of the day it is a commodity component. The analogy works for the business of programming with many tools now are able to auto generate the building block code to a consistent standard and quality: i.e. a commoditised function.  Full and lasting value must surely then lie not in the construction of code but in the application that is devised and the way it is architected or modelled to deliver the function required. The resulting experience of engagement for the user is intrinsically tied to the value perceived and this is rooted more in the application model and architecture than the underlying code.