All posts by lammersma

Uniface developer and founder of Unividuals. Unividuals is the largest coöperative ICT organisation in The Netherlands.

AI First

Focus on the right stuff

For a long time ‘mobile first’ was our software developers paradigm. Every new application should not only take the mobile user into account but also focus on mobile use as the primary device. Nowadays, Artificial Intelligence, (AI) is also a subject matter. But what does it mean for developers, and what happened to mobile?

AI first, mobile second?

Mobile is not forgotten. The ‘mobile first’ paradigm was necessary to make the step from desktop to mobile and adapt features of mobile devices. Since mobile devices were put in first place it’s common to design and build from a mobile perspective. Mobile is the new normal, just like desktop was in the 90’s and web (still on desktop btw) in the zero’s.

Artificial intelligence (AI) is not new. This in contrast to mobile. Twenty years ago we could only dream about the mobile revolution. What we find normal these days most visionaries didn’t predict a decade ago. But AI is something from the mid 50’s. And from far before that. It’s been in your minds for generations, machines behaving like humans.

Artificial General intelligence (AGI)

There are roughly two categories of AI: applied or general. The last one, Artificial General Intelligence, is used for the general purpose systems that more or less behave like the human brain. These systems can be even better (whatever that might be) than the Human General Intelligence. This is what we think about when we talk about AI. But it’s elusive.
Have you seen the movie Her? About a man falling love with his Operating System. This is what we think AI is or should be. Thinking like a human, but without the disadvantages of the human brain (the need for sleep for instance). But it is also the image that scares us most, isn’t it. Computers and robots taking over and making us, humans, superfluous.

Sometimes it/IT looks like magic. Do you remember this magician David Copperfield making the Statue of Liberty disappear? We all knew it was an illusion (although we didn’t know how he did it). In 18’s century an automated chess player was invented. A machine that could play chess. Turns out, there was a tiny chess player inside this machine.
In the 90’s the development of neural networks where very popular. Computers programmed to behave and learn like the human brain. Finally we had real AI! Very promising, but about a decade later we learned about big data. Why predict the future if you can calculate it?! Google could predict the flu based on the search result. That’s what going on these days. And that’s what makes IT an interesting playground for Uniface.

Artificial Applied Intelligence (AAI)

Systems that replicate specific human behavior or intelligence. It varies from old fashioned fuzzy logic (like the controller of your central heating system and the PLC’s the control the traffic lights in your city) to Machine Learning (you wished the traffic lights were controlled by). It all might look like it’s a kind of intelligence, but most of the time it’s something the developer more or less created. But the reaction started by a certain action is depending on previous results: “Last time you, the user, where satisfied when I did this after you did that, so I am going to do exactly the same.” There is nothing magical about that. That’s combining data, computing power and a bit commonsense.

An example where I wish the developer did use AAI. On my phone I have a public transport app. When I type the name of the street where I want to travel to, it shows me all the cities with this street. Of course I can start typing the name of the city, but I want the system to know where I want to go. Since I always use this system within my own city. I expect the system to learn how I use it and show the street in the city where I am on top of the list.

Big data and sensors

Tesla knows how to use AAI. Their autopilot it mostly depending on AAI. Every time something unexpectedly happens the car communicates this to a centralized system. The system learns by comparing the specific situation, the performed actions and the results of these actions.
In fact, it’s relatively easy. Only thing the system has to do is decide if the current course is safe. Constantly monitoring all real-time input. On the internet you can find videos about Tesla’s predicting a collision and taking proper actions to prevent it. The autopilot stopped the car, as it should. From a human perspective not a big deal, this is what our brain is doing constantly while we are awake (and even in our sleep). And that is exactly what AAI is all about, replicate a specific part of the human intelligence.

Modern times

Most ‘old fashioned’ developers and probably even the organizations they work for, still want build software that is hardcoded van A to Z. That makes the development process manageable and testable. Software that is supporting the business processes of yesterday.
Nowadays users expect software to think with them. Software that supports their wishes and demands of tomorrow. Within a few years they expect their systems to think for them! In modern software development AI must kept in mind. Not every situation can be programmed nor tested. It is not a developer thinking about every possible situation. Software is more then a long list of ‘if then’ statements; it’s less.

All it takes, is a database with all possible situations and actions. Every new situation is added as soon as it occurs, updating this system on every possible occasion. The heart of the system consists of algorithms that determine which action is the best option given a certain situation.

This is how a chess playing computer beats a human grandmaster without cheating like the machine mentioned above: by playing (and winning and loosing) over and over again and learning from it.

And this is how a robot learns itself to walk: by walking, and falling and standing up over and over again.

Another example where I want to have more intelligence is my calendar. When I have an appointment I want my calendar software to tell me when I should leave to be on time. Based on my current location, the means of transportation, the traffic, my behavior (I walk fast, but leave always just too late), etc. And I want the software to warn me when a new appointment endangers my schedule for that day.

Uniface

What makes a programming language suitable for AAI purposes?

• AAI is about data. Some of the data is static and stored in a database. With Uniface we can build data intensive applications. That’s where Uniface’s is designed for. It’s technology independent, scalable and very stable.The Uniface programming language is optimized for reading data from and storing it into every common database system.

• AAI is about using sensors. Not all data is (relatively speaking) static, some is realtime from sensors or user input. The Progressive Web Apps built with Uniface can use every hardware feature on mobile devices. And Uniface can even be installed on devices like Raspberry Pi and use every sensor attached to the system.

• AAI is also about user input. Uniface supports a wide range of user devices. From the old fashioned desktops to mobile apps on a smartphone.

• AAI is about computing power. Applications build in Uniface can be deployed on every mainstream OS. The coding is interpreted efficiently.

• AAI is about building clever algorithms. Developers don’t have to worry about OS and database specifics. So they can focus on writing clever software. Building algorithms is something every developer loves!

That sounds ideal for Uniface. And it is! I am very curious about your first AAI applications!

For samples, tools, add-on’s, blogs and more, visit openuniface.com

 

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!

 

New Year’s Resolution

These are the first lines I write in this new year, 2017. I want to start with wishing you all a very good and successful year. How strange is it. On New Year’s Eve we look back, while on New Year’s day we make plans and start with our New Year’s resolutions.

Some things will start, some have ended and some continue. For most of us, Uniface is one of those continuing. As I wrote before, sometimes I wonder how long it shall. But on the other hand, why care. There are thousands of software development tools. Most of them are bigger (whatever that may be) and perhaps some better than our beloved Uniface. The concept of programming is, from a certain point of view, always the same. Sure, you need to learn. You quit being a Uniface senior to become a junior in something else. You will enter a whole new world, with new and probably many young software developers. And between these hipsters you are the oldest junior they have ever seen. Wow, interesting, isn’t it? Your New Year’s resolution can be becoming a junior again!

In a previous blog I’d bet you a beer. I wrote about this company where I once worked. They tried several software development platforms. Maybe they found something else more tempting. Eventually they did choose Uniface. You did not expect that, did you! To be honest it was a close call. Right on time Uniface invited the management for a lab visit in Amsterdam. Uniface product management listened and that did some amazing magic.

But software development isn’t about magic. No fairy tale with software generating magicians. We all know that. It’s just hard work. One of the most heard complaints is the lack of standard components or add-ons in Uniface. The management of the mentioned organisation also asked this to the Uniface product management. Why do we need to build everything by our self? Why can’t we download standard solutions instead of building them?

The answer is simple: just because…

  1. Your problem is unique, no one ever had it before
  2. It’s been built, but the solution is too specific
  3. Or the solution is built in a previous Uniface version (what the f…, Uniface is upward compatible!)
  4. Or the quality is poor, there is no documentation, there is no source code available or someone wants money for it (and you believe software should be free)
  5. Someone built it before, but did not share it with you.

Is this a problem? Yes, it is. Can we fix it? Yes, we can. And I believe it’s simple. Whenever you think ‘Hey, why can’t I just find this on the web?’, do the following:

  1. Look once again, perhaps it is somewhere around
  2. Design the most generic solution
  3. Build it
  4. Test it
  5. Write some documentation
  6. And…. share it.

Maybe it’s a good New Year’s resolution. Emphasize your Uniface seniority and build to share. How? Where? Who? After reading all of the reactions on my previous posts I have a plan. I am working on it and I’ll explain it to you in the next posting.

Happy new year!!!!

Make some noise!

In my previous blog post I told you about my worries. I was thinking about it and even talked to a few of you about it. It reminded me of something that happened to me once. A few years ago I was hired by an organisation. I was just one of the Uniface pro’s. Besides Uniface they used another development platform. I witnessed something very interesting, let me share this with you.

Both disciplines had their own room. In one room all went well, a dozen men worked in silence, behind a closed door they achieved their goals on time and within budget. The applications they maintained were very stable and performed as expected. The other room on the other hand was very lively, the walls were filled with all kinds of merchandise. The young developers had all kinds of technical issues, played arcade games in their breaks and drank beer after work.

Can you guess in which room the Uniface developers worked? Easy one, I know. If you can guess the next answer, I’ll buy you a beer. Which platform was preferred by the management?

I am afraid this is going to cost me a fortune on beer. We all know the answer. Of course, the other guys did a great job. I am, like most of us, too negative about them and the tooling they use. The reason they were not that productive was caused by the tools they used. But did they win?

Change the point of view. Let’s say you are the management of a company. The company depends completely on a few Uniface applications. Very stable and low on maintenance costs. In the near future you expect major changes in the organisations strategy and the markets are changing rapidly. You need to invest in new applications and/or change the existing ones. Are you going to use Uniface or go for something completely new? Choosing Uniface is the rational choice, isn’t it. Imagine, you have all these experienced guys (sorry ladies, but this is a man’s world…). But you never hear them. Sometimes you wonder if they even exist! How do you know if they use modern techniques? And what if you need a dozen more of these pro’s? Where and how can you find them? When you consult google.com you’ll find all kinds of software warehouses to deliver you support on that other tool, while on Uniface all you find in the top 10 is Uniface itself.

If I had to give advice to this management, my advice would be to choose this other tool. Regardless which tool. Being a Uniface developer, as I am, I can tell you this hurts a lot. But it’s just a rational thing. Or isn’t it?

This reminds me. Once in a small village in The Netherlands the only shop closed down. All inhabitants did their grocery in the large supermarket in the adjacent city. Quiet normal, I guess you see this everywhere in the world. The next day an alderman announced in the newspaper that it would be a good idea to not only close the small shop, but also close the complete village. If the inhabitants loved the city to do their grocery, why not go and live there. This action did not save the local shop. But what if this one guy achieved to create a kind of movement. Let’s say, he achieved to motivate some entrepreneurial people. With this small group they could create new business for the local store. Instead of competing with the large competitor, focusing on the strengths. Sometimes you need the help of a community. Today, the strength is the community!

All successful tools I know have communities. Some very successful tools even are created by the community! A product community can be a partner or a critic ally for the company, but always fight on the same side. But, where is the Uniface community? All I see is a great product and a website (uniface.info) with lots of fans. But that is not a community! It is something created by Uniface. I want to create a real Uniface community.  I truly believe we have the strength to unite and make the difference!

You can either participate or wait behind a closed door and I believe I can hear some melancholic seventies music. Let’s make some noise…. Let the world know we are here…. In my next blog I will share my ideas and plans with you all. Do you have idea’s? Please contact me  🙂

I love Uniface

If you think ‘hey, this is a strange posting? Where is the technical stuff?’, you are right. Most of you don’t know who I am. My name is Peter Lammersma. I am an entrepreneur and work with Uniface since 1996. Uniface was my employer from 1997 to 2001. The reason I am starting to blog here, is because I am worried. In this first blog posting I will try to explain why. I asked Uniface BV (the company) to give me, although I am not employed by them, permission to write this blog on Uniface.info. Because I believe that we are the solution.

As you might know, I love Uniface. If there were ‘I love Uniface’ coffee mugs, I would drink my coffee out of it. Every day, really. If there were T-shirts, I would take good care and give it a special place in the wardrobe.

This feeling I have since 1996. Twenty year ago I swore that Uniface would be last software development tool I would ever use. As an entrepreneur for many years I am busy with several businesses, a few IT related, most of them not. And Uniface? I tried to escape, but she is always returning on my path. And believe me, I am more experienced with Uniface than I am with English :).

Now I am 45 I dare to admit, I like building software. To be honest, I don’t have a very objective point of view comparing Uniface with other tools. I am not interested in other tools, as long as Uniface serves my needs.

And it certainly does. Don’t you agree? Proven every day when we develop and maintain the software for our customers. With a minimum effort we produce highly effective applications. I believe this is called the return on investment. This is a very important business indicator. Every rational thinking decision maker can calculate and decide to use this wonderful tool forever! I certainly would. But, I have terrible news….

There is something wrong. I am worried and I want to share my worries with you.

Lack of Eagerness

I just realized that I am still using Uniface 9.6. While I should be interested in the new mobile features in 9.7. Wait, let’s skip 9.7. I should have downloaded Uniface 10, from the first day it was available. But I did not. Somehow Uniface 9.6 has everything that I need and I am not eager enough anymore to learn new stuff.

Have you already downloaded version 10? Or do you, like many, work in a version 9 in a way you used to in the previous versions?

And you know what worries me most? We don’t seem to care.

Where is that New Business

On the other hand, why should we use Uniface 10? Because it’s highly productive? The redesigned GUI? It’s not really important, is it. We all work like we did in Uniface 7. Sure, we use some of the new functions or statements, but in the end we try to hold on to what we once learned and used.

And why should we. New business is rare. Building or buying, the oldest question in software. When an organisation decides to build software, they will choose a sexy software development tool. Rather than proven technology with a huge install base. A game changer is always nice to talk about in the businessclub. You never hear someone say: ‘I choose this product because my dad used it in his business twenty years ago’.

Despite all commercial activities, most of us are stuck with the maintenance of the current applications. No need for new stuff.

So what

All above gives me a headache. You see, I want to use Uniface in future too. But I am doubting there is a long future. There is something that must be done. It’s not enough for Uniface (who came up with the idea to give the company the same name as the product?) to release a brand new product and wait what will happen. Nothing will happen by itself.

And we? Are we also just waiting for things to happen? We, the Uniface users, should find a way to regain our enthusiasm, our eagerness. I am thinking about this for a while now. But I wonder. Do you share my worries? I am very interested hearing from you all. So please respond to this blog. I am looking to forward to hearing from you (send me a message or comment below)!

In the meanwhile I’ll need a coffee and wait for something to happen…. Or?