Performance


z4OK, so yes, I did go a little mad the other weekend.  I’ve hankered for a roadster for many years and this little beauty presented itself and I took the leap. She’s garaged and only comes out at the weekends. However, that does not matter because she puts a smile on my face whilst she’s standing still as well as when I behind the wheel, feeding that 2.5 litre straight six and pushing her on through some sweeping bends.

Whilst modern she retains some glorious traditional lines, she looks fast when she’s standing still and when you open her up she’s as responsive as you like and she just flies.

OpenInsight 10 (OI10), for many of us has been a project that has seen the interface chance considerably. Whilst hugely functional, the old desktop interface was looking aged and not overly intuitive for new users. For experienced developers, the interface required a fair amount of clicking down through layers to achieve things or, at best you needed to know the shortcut keys. OI10 delivers a brand-new interface that is way more intuitive to use. There is no more clicking down through layers, so much more is right there in the interface or one click away and so, so much more has been exposed in the way of new controls, properties and more.

Whilst the O4W interface is still pretty new, it’s early releases were based around a two-column approach but OI10 opens up an array of new possibilities with multi-column design and drag and drop development.

I’ve played with the latter Alpha releases and I’m now getting more and more into the beta to convert my personally written contact manager that I use on a daily basis at RevSoft. I’m fast learning that OI10 all adds up to an easier to use interface with productivity gains to be found everywhere. I cannot believe how much code I can now remove from my forms by just setting one simple property in the Property Panel – that’s usually a case of inserting a single value (numeric or text), or making a picklist selection or toggling a property. OI10 is making our application developer easier than ever and introducing standards that will no doubt deliver better applications through consistency, stability and refined code.

So, the interface enhancements are nice, the O4W design options are more powerful but people still want better performance and on more than one occasion recently I’ve had discussions about indexing large files.

At conference last year, Bob spoke about the way that the conversion tools will optimise your tables. It is still work in progress but Revelation are mastering the dark art of balancing file-sizes with thresholds and a whole load of things that I really don’t understand. Bob’s also worked on caching things and using memory better and Andrew at Sprezzatura continues to explore ways to better configure the system for Linear Hash and find performance gains.

Some people don’t think that Revelation are taking performance seriously and listening to their customer base. I know for a fact that this is not the case. You only have to sit in the car with Mike on the way back from a User Group meeting to know that he personally takes customer needs and requested extremely seriously. On more than one occasion (in fact on many occasions) I’ve been driving him across the UK and he’s bashing away on his keyboard like it’s going to give up on him in the next ten minutes. We get to our destination and he shows me an example of something a client has suggested or requested and with a big smile on his face, he tells me that I can let my client know that it’s in the next release – subject to testing and quality control of course. It’s the little details like this that have kept me loyal to Revelation for the last 20 years, in a sales role that would normally have seen half a dozen sales people come and go.

Like the motorcar currently sitting in my garage just a few feet away from me, OpenInsight is maturing into one of IT’s classics which continues to deliver on the needs of the modern application developer. Not only does it look good and it’s wonderful to work with, hidden under the hood are a number of highly sought-after enhancements that are set to deliver some of those performance gains that the OpenInsight community have been asking for.

Just yesterday, after yet another call with a client looking at index performance on files with 500,000 plus rows, Andrew told me about some more of Bob’s enhancements to OpenInsight. Well, I just had to get some highlights from the man himself and, as a teaser, this is his reply:

“I have re-written index builds and updates. The high points are:

  • Rebuild uses in-memory hashtables and removes 64k workarounds which were in the legacy build.
  • Rebuild all for a table rebuilds all indexes in one pass, rather than individual passes
  • Update_Index is rewritten so that there is less contention on the root of the index. I made changes to SI.MFS as well.

…”

I don’t fully understand indexing but Bob tells me that the current system has to make numerous passes. One test that he undertook had to make six passes through a system with 500,000 rows. His greatly refined solution now makes just one pass through 500,000 rows, rather than having to work through 3,000,000 rows. He therefore has a very high level of confidence that the rebuild process work well and performance gains will be experienced across the board. I don’t have the figures, but he tells me that the 500,000 row rebuild was much faster and that’s good enough for me.

Other enhancements include a brand new update process that makes use of multiple sessions updating many tables at the same time. This has proven to be robust and fast during internal testing and we look forward to hearing the results obtained by our beta testers in the real world and running against real databases with hundreds of thousands or millions of rows.

I’m looking forward to getting out in the Z4 with Joanna, putting the convertible roof down and enjoying the wind in our hair. In the same way, I’m looking forward to working with the fresh looking OpenInsight toolset, modernising my applications and sharing this new gem of a toolset with the wider MultiValue community and the application development community in general.

We now have a fully integrated, highly functional toolset that is easy to use, powerful and fast. I can’t wait for the official OI10 release and to hear what Mike, Carl, Bob and the team have in the pipeline for OI11.

It’s going to be a great ride for the foreseeable future.

Advertisements

Today is going to be a fun day


stock_login_window

So, I’m all caught up on my regular work, far too many people are on holiday and Revelation Software have just uploaded a nice present to my FTP site.  As I write this email, the brand new OI10 beta software (an advanced copy) is being downloaded to my machine and I’ve cleared my workload to spend the next few hours playing with it before RevUS opens.

What a great way to start a Monday morning :D.

OECGI4 and REST


didyouknowoiOne of the upgraded features of OpenInsight 10 will be OECGI4, the newest version of our web support routines.

One of the enhancements to OECGI4 (available as both a Windows executable for Windows web servers, and as a PHP routine for Windows or Linux web servers) is additional support for some of the less well known “verbs” used in the HTTP/HTTPS protocol. When using OECGI to support or access web pages, the HTTP and HTTPS protocols use the “POST” and “GET” verbs to submit, and request, information respectively. These have been in common use since the World Wide Web first standardized on the HTTP/HTTPS protocols. But in addition to the familiar POST and GET, HTTP/HTTPS defines other verbs that can be useful when writing RESTful interfaces.

REST stands for REpresentational State Transfer, and is in a way the underlying principle of the Web. When a client makes an HTTP or HTTPS request from a server, the response from the server contains not only the specific information needed to answer that request, but also details that the client can use to get more information, all “bundled up” in the answer. For example, when a request for a web page is made, the web page may contain images, or stylesheets, or script calls. The client has no way of knowing, in advance, if there is one, or a hundred, images in the returned page – but the page itself contains the instructions the client can use to retrieve the images, or the style sheets, or the script pages. The page may even include the data and instructions needed for the client to retrieve other pages (via links, or via pagination). Because of its familiarity, this may seem simple and straightforward when it comes to web pages, but the concept (that nothing is “predefined”, but rather everything is embodied in the responses) can be expanded upon to make much more advanced inter-operating systems.

REST can be used, not just for retrieving and updating web pages, but also to enable computer programs, as well as people, to interact with web services. By building a RESTful interface, a web service designer opens up their web site to the possibility of having other software query it for information, or update it with changes, thus allowing anyone else to put different user interfaces (if any!) on these interactions. While not required for REST, using HTTP and HTTPS, and the additional HTTP/HTTPS verbs, is currently the most common way of implementing this.

In addition to “POST” and “GET”, HTTP/HTTPS (and OECGI4) support the verbs “PUT”, “DELETE”, and “PATCH.” In the RESTful programming world, the “GET” verb is used to retrieve information – either about the other available interfaces this RESTful interface supports, or information about specific “objects”. For example, if you were to create a customer maintenance web service, the “GET” verb might be used to retrieve the list of customers, or the information about a particular customer – or the list of commands that can be applied to those customer “objects”. The “POST” verb is commonly used to create new “objects” – in our example, the “POST” verb might be used to create a new customer. “PUT” and “PATCH” both are commonly used to update existing “objects” – in our example, either “PUT” or “PATCH” may be used to change the customer’s phone number (PUT may wipe out any data in fields that aren’t specified, while PATCH should only update the specified fields). Finally, “DELETE” is most commonly used to remove “objects”.

When using OECGI4, you can examine the request parameter to find the “request method” (defined in the INET_EQUATES insert), and – with the appropriate INET_XXX stored procedures – you can begin to implement your own web service.

Interested in learning more about RESTful programming? For additional information, please see the following resources:

http://stackoverflow.com/questions/671118/what-exactly-is-restful-programming

http://blog.octo.com/en/design-a-rest-api/

Confusion & Wisdom


oi10tab1
This again is going to be more of a memory for me, but it will still be useful for those of you working with the OpenInsight (OI) 10 Alpha.  I’m a back to working on an application for one of our Value Added Resellers (VAR) and I’ve been trying to build a dynamic toolbar because the system is mostly operated by touch screen operators.

The current menu is three levels deep and the toolbar is limited in space.  I therefore wanted to have a double toolbar with one row of static buttons and a row below which would change depending on which top level button (menu item) is clicked.  The obvious way to achieve this is a panel with a row of buttons and a tab control.

Now the Tab Control in OI 10 is located under the Containers sub category in the Toolbox.  I therefore thought “Great, I’ll drop the buttons on the tab and all will be good.”  However, the current Tab Control has been specifically designed to operate like the current OI9 Tab Control.  This uses paging Forms and you simply drop the controls on the appropriate page, rather than the tab control.  Dropping them onto the Tab Control is actually impossible because it jumps to page one all of the time.  Nevertheless, thinking that the tab control was an intelligent container, I blindly pressed on, getting myself into a state of confusion.

Five minutes later and Carl put me right.  He explained that the current Tab Control has been written to work exactly like the current one so that people’s upgraded applications will not break – that’s the Wisdom and I really glad that Revelation are thinking about supporting existing application, rather than blindly building new controls for new applications.

All I needed to do was:

  1. Drop the tab control on my form and make it shallow so that only the buttons show.
  2. Drop the buttons (or whatever controls) onto the appropriate pages and where I need them to show on the tab control.
  3. Then the bit I was missing.  The buttons will most likely display under the tab control.  So, click on the button, right mouse click and choose ‘Bring to Front’.
  4. Finally, slide the Tab Control over the buttons to contain them – or give the appearance to contain them.
  5. Add the usual tab control code used in OI9 and you are done.

So, what about a brand new tab control that works as a container and that has pagination, or whatever?  Well, don’t hold your breath, but watch this space.

A few minutes later and I have my working dynamic toolbar.  Now I just need to add some glyph images, some code to launch the associated forms and I’m done :D.

 

OpenInsight 10 – Alpha 7


OI10whiteRevelation have made some good progress with the OpenInsight 10 Alpha and I’m currently working through my bug list and closing a nice number of reported issues from earlier alphas, something that I’ll continue with over the weekend.

In line with their open and transparent policy for OpenInsight 10, they Alpha v7 is now available for download to all Works Members.

The Alpha v7 is available as a full install. So, if you have worked with earlier alpha’s please use the AppBackup facility to backup your old alpha work and restore it into the new alpha.  This is what I do but one word of warning.  If you keep your data, images and other supporting files in a specific folder (I keep things in C:\RevSoft10.6\MDPmyApp) you’ll need to copy that folder from the earlier alpha and into the new alpha once installed.  The app restore will then use the new folder and the restore should run just fine.

This version includes many enhancements to the IDE, Form Designer, Table Builder and O4W, so it is well worth a look and to take the opportunity to report any issues that you find to Revelation and have those issue addressed before Revelation releases the beta.

OpenInsight for Web (O4W) v2.0, included in the OpenInsight 10 Alpha v7, is a rapid application development tool that lets you generate responsive forms, reports, and dashboards.  Use the powerful GUI drag-and-drop to lay out your forms and then test in both desktop and mobile browser mode. Or use the toolset’s full-function API to create the most sophisticated web pages.

Alpha v7 is set to expire on April 4, 2017.

Conference


2016conf

If you are interested in OpenInsight 10 and wondering what the forthcoming conference has on store for you, then you’ll be interested in the Revelation Conference website which is now live.

If you are an OpenInsight developer or a MultiValue developer using one of the main MV tools and you are still not interested and I can’t see why you would, please checkout the conference website and the Topics section specifically before you decline to take advantage of this learning experience.  You just might be missing the opportunity to take your applications to the next level the easy way.

The Revelation Conference is the main event on Revelation’s event calendar and this years event looks to be bigger, better and more appealing to OpenInsight and other MultiValue developers than ever before.

This dedicated website provides you with all of the information that you need about the conference.  It has details about the location (Orlando, Florida), you’ll find out all about the presentations and the absolute wealth of information available, about the speakers themselves and more.

I found the last conference invaluable in preparing me for the forthcoming OpenInsight 10 release and this years event looks to put even more detail into our hands.  In doing so, Revelation are clearly using this major event to empower OpenInsight developers with regards to the new version and help them to become more prepared for the new release and ready for the wealth of change and good things buried on the 1,000,000 plus lines of code that has changed and the numerous new features for both developers and users.

The graphic above uses the word ‘Faster’ and is one of several that I could have borrowed from the new site.  I chose faster because it is something that all of my customers are asking for and I believe that the new version will be faster – both with regards to development and the running of deployed systems.

Want to know more – checkout the Conference website and get your place booked ASAP.

I look forward to seeing you in Florida in April.

BTW – The conference website also includes a downloadable conference brochure and the Early Bird registration is available until February 29, 2016.