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

When is a bug not a bug…


… when Martyn is playing with the OpenInsight 10 Beta and his knowledge of the new system is lacking <lol>.

OI10Beta

As many of you will know, I have been working with the OpenInsight 10 alpha for sometime and I recently downloaded and begun playing with the official OI10 Beta which was released a week or so ago.

I’d reported a good number of issues to RevUS during the Alpha program and I’m pleased to see many of those issues resolved in the Beta and a mountain of other things now working and working really nicely.

OI10 is a massive change from the old 9.x versions.  It is so much easier to use and massively more developer friendly.  I’ve only really played in the forms designer (image above), popup designer and scripting tools but it is a brand new world compared to the old interface and tools.

For example, the Main Application Manager window lists your recently accessed entities, making access to those entities a day or two later super easy.  Once in the forms designer, you can now have multiple forms open and you can work on them all at the same time – although I’ve confused myself on numerous occasions and found that the tab bar gets a little full.  However, I absolutely love the ability to have a form open and then scripts and Quick Events open for that form, popups associated with that form, graphic files associated with that form and more – it’s just so intuitive and super, super easy to jump between entities.  No more closing things, drilling down to find new entities and opening them – it’s just a massive, massive time saver, let alone more organised.

Then you have the properties and events readily available at the side of the interface.  I usually have the Properties panel open because there are just so many properties that have been exposed to make life even easier for developers.

I used to write loads of lines of code to handle row shading, window positioning and the like, now it’s a value in the properties window.  This makes for exact positioning, the creation of some lovely looking windows, better graphics handling and much much more.

As I get more into OpenInsight 10, I find that it is the little details that are making all the difference.  For example, when compiling a form, I get an immediate notification of an issue in the output panel at the bottom of the window in red text.  So  much more is delivered right to the developer in the interface.

All of the usual tools are in the toolset, although just about everything has had a makeover or some level of enhancement.  The changes within the toolset are huge and massively beneficial.  The only downside is that there is going to be work for all of us moving existing OpenInsight applications to OpenInsight 10 but the benefits will be well, well worth the time and effort.

As for non-OpenInsight developers.  Well, Revelation are now delivering one of the few fully integrated application development suites for both super rich desktop and amazing web based applications.  We now have a very intuitive toolset that developers using other tools will be right at home with and which features form design tools, coding tools, debugging tools, reporting tools and much, much more for both desktop and web, right on one comprehensive toolset.

Another massive leap forward is O4W.  This ground breaking toolset, that I used some time ago (as a non developer) to build a proof of concept application and which was finished by the VAR and now used by the employees of some of the Internets biggest names (no need for me to say who), used to be based on a couple of columns and creating more complex interfaces was not overly easy.  With OpenInsight 10, all of that has been addressed and O4W10 (not it’s official name) has really matured into a brilliant piece of technology for those of us who don’t want to learn HTML5, Javascript and the like.

I might be more than a little biased, but I am totally and utterly blown away by what Revelation are now very close to delivering to the OpenInsight development community, the MultiValue development community for widely and business in general.

The beta program is currently open to all OpenInsight WORKS subscribers.  If you are reading this and you are not a WORKS member or you are new to Revelation Software, please contact your nearest Revelation office and we’ll be pleased to assist you in any way that we can.

I was told sometime ago that OpenInsight 10 was set to be a game changer.  I now know why that person said that to me and I can’t wait to learn more about converting my applications and building new systems and proof of concepts for clients and prospects.

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 Presentation Server


OI10white

OpenInsight 10 Features –
OpenInsight 10 Presentation Server

The OpenInsight Presentation Server is a core part of the OpenInsight Development suite.  It hosts the OpenEngine virtual machine and provides Basic+ programs with an object based interface to create and manipulate Windows Desktop Applications.  As well as providing the capability to create your own applications, the Presentation Server also provides the actual OpenInsight development environment itself, which comprises the IDE and its associated tools.

Download a copy of the OpenInsight 10 Presentation Server Reference Manual HERE.

PLEASE NOTE: The OpenInsight 10 Presentation Server Reference Manual is currently a work in progress and is may well change between now and the release of the OI10 final release.

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.