Tag Archives: development

Keeping up with technology…a lot like Formula 1

Uniface, being a low-code platform which shields developers from technology changes in the application stack, takes pride on staying on top of the leading edge of technology. To start, the application stack I refer to is based on the Open Systems Interconnection model (OSI) defined by the International Organization for Standardization (ISO) about the interoperability and communication layers. So all the technologies needed to maintain applications’ interoperability while communicating to achieve the business goal as programmed by the developers.

In Uniface development, we have a track record of keeping up with technology, nowadays more challenging than 33 years ago when Uniface started of course. 😉

Let me share how Uniface development approaches technology and technological paradigms. Uniface is a technology partner for our customers and partners. As such, we take pride in actively participating in the technological world around us, which should add value to our customers. It also reinforces our relationship with technology resulting in the Uniface direction. Additionally, and with the intention of being transparent, we blog about it.

I want to start by making an analogy between Uniface and Formula 1 (F1 Championships). In F1 racing there are also a lot of technological developments on which all car manufacturers and teams rely on (powertrains, ERS, ES, power units, tire compound, telemetry, DRS, KERS, chassis, etc.). Actually all of the participants follow the evolution of these developments actively or passively depending on their area of expertise (additionally sanctioned by the FIA).

It is the same in our application development world, there is a lot of technology involved and we do actively follow it. Essential to that and following the Uniface value proposition, we need to be up to par with the latest trends in what applications need from technology.

Following our analogy, the Uniface car might today have a power unit from Mercedes, while we simultaneously look at the power units from Ferrari and Renault.

The Lab and the engineers look at all technologies and we make sure that the leading edge in technology is used by the car we build (Uniface) because that is what makes us different. Product Management makes sure that our customer requirements plus the technology innovations are included in the Uniface portfolio.

I think that all of the above confirms to our customers the value Uniface provides is much more than one mere technology, but they can be confident we are looking at a much broader spectrum of the application technology stack.

Rest assured that the direction that Uniface takes will be defined and determined by Product Management and reflected in the Uniface roadmap.

 

What Is Digital Transformation?

Over the last five years or so, there’s been a lot of talk on the topic of “digital transformation.”

However, there hasn’t been a generally accepted definition of what that term means, exactly. What is digital transformation? What does it mean for my organization?

At Uniface, we embarked on a research project with Creative Intellect Consulting, Ltd. (CIC) and at the outset, put forward a definition that technology professionals and business leaders could agree upon. For the project, CIC presented the following working definition of “digital transformation” to 300 survey respondents, representing enterprise organizations, value-added resellers (VAR) and independent software vendors (ISV):

Digital transformation is “the transformation of business activities, processes, competencies and models, to fully leverage the changes and opportunities of digital technologies and their impact across the organization, in a strategic and prioritized way.”

Ninety-seven percent of the 300 respondents agreed with the definition; 3% thought either they weren’t qualified to weigh in on a definition or wanted the definition to be a bit broader and not so focused on technology.

What’s key in the presented definition is to notice where the responsibility of such a shift lays. The burden to ensure digital transformation within an organization does not only belong to the IT and technology teams; rather, digital transformation is a strategic responsibility shared by business leadership and IT.

With that in mind, a successful digital transformation undertaking will span both IT and business leaders and should include:

  • End-to-end technology solutions that support speed and integration;
  • A systemic change that’s built with new technologies with existing systems and knowledge, but supports the new digital business;
  • A wider group of professionals spanning departments who can work together to build and deliver an organization’s digital transformation roll-out;
  • An ability to quickly develop and deploy increasingly complex applications.

Why does all this matter? Why is it important for organizations to embrace the digital transformation movement?

In a word: relevance.

In order to survive – and continue to thrive – organizations must begin to think strategically about how to marry technology and business goals. An organization’s ability to be innovative, foresee change, focus on what their customers want – and anticipate those wants — will certainly be positioned to succeed well into the future.

Now that we have a well-defined idea of what digital transformation means, we are better able to begin thinking about the strategic needs of our business and determine how IT can help to implement necessary changes. The health of the organization, its people and its clients depend on it.

Heading towards Uniface 10.3

Since the release of  Uniface 10.2 the topic of custom utilities on the Uniface repository has come up several times during conversations with customers, at user events and in the forums. The plan is that we address at least part of these requirements (making umeta.xml available) in 10.3.

Migrating to Uniface 10
Uniface Entity Editor

Why wait for 10.3? The migration from 9 or 10.2 to 10.3 will require a full migration, an xml export and import. This is something we don’t do in patches or service packs. The reason for the migration is that we are working towards locking the repository to offer a stable platform for customers. By stable I mean one where, for the foreseeable future, we will not require customers to undertake a full migration. We have planned changes and are validating them to make sure we can implement the functionality we would like to deliver. For Work Area Support we need to make sure that, as much as possible, merging is possible. For global objects (USOURCE) we are splitting it in to multiple tables to more closely reflect the data they hold.

With the repository being updated there are some areas in the development environment that also need some attention, we need to ensure they continue to work:

  • The compiler
  • Export/Import
  • The hybrid components
  • xml
  • Migration
  • Create Table Utility (for repository and user tables)

Whilst on the subject of the “Create Table Utility”… We have been thinking how it might fit into the IDE, should it have its own workbench or should we achieve the functionality in another way? There are currently two implementations we are looking at. Firstly, from the command line. This option is how, in the future we will be supplying the scripts for the repository. Getting Uniface to generate the scripts, rather than a static list being supplied with the installation, will mean more deployment options – it will use driver options in the ASN to generate the correct scripts for your environment.

Uniface Scripts
*Example only

Secondly, we are looking at adding a create table menu option to the project editor. With this method it would be possible to collect all the tables you need generating into a project and asking Uniface to generate the scripts for you.

Uniface Table Menu

Uniface 10: What’s happened since the release?

Back in September 2016 we had quite a major event, Uniface 10 was released with the ability to develop and maintain all forms of Uniface applications – Client Server, Web and batch.

Uniface 10

Since the release, and based on lots of feedback from the early adopters, we have continued to actively enhance the IDE with constant incremental improvements. In this blog post, I would like to share with you what these improvements are as well as what we have planned for the near future.

To start, it is probably a good idea to give some high-level topics we have been concentrating on.

Migration

This topic has probably been our primary focus during the continuous updating of v10. We have always had a migration path between Uniface versions automating any updates needed. In version 10 we continue with this concept and as information becomes available, from customers and our own experiences, the migration utilities have been updated to further improve the experience.

Uniface 10: Code migrated from 9 to 10
Uniface 10: Code migrated from 9 to 10
Usability and bug fixing

Performance in large repositories has proven to be an area where we have needed to pay attention and has generated some lively discussions on uniface.info. Although this is an ongoing theme we have already made significant enhancements. The dropdown browse dialogs for the Development Objects (cpt:, ent:, libinc:, etc) will load the information and format the data with considerably less of a delay. Incremental rendering has also been added so that the list becomes available and usable even while extra rows continue to be added. The same techniques and improvements will also be added to the resource browsers in the coming patches.

Uniface 10: Cascading brows dialogs
Uniface 10: Cascading browse dialogs
Embedding the GUI screen painter

Client server development is another area we are enhancing. The first enhancement we are planning and currently working on is embedding the form painter directly into the v10 IDE.

Uniface 10: Embedded form painter taken from a developer's PC
Uniface 10: Embedded form painter taken from a developer’s PC
Runtime enhancements

It is now possible to specify what trigger, accept or quit, will be called when an auto close popup loses focus.

The ability to undeclare a trigger, operation or local proc. This will allow model or previously defined scripts to be excluded from the compile effectively allowing default functionality for a trigger to be re-established.

The ability to call up to a higher-level trigger has been added, this allows such actions as explicitly calling the entity level Detail trigger from the field level detail trigger.

Uniface 10: New popup options
Uniface 10: New popup options

As you can see, we’ve been very busy, and there is a lot more to come.

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!