One Evening = One Application


I was recently asked by someone looking at using OpenInsight for the first time, “How quickly can I really build a small system in OpenInsight 10?”.  Naturally, being a salesperson, the answer was “Very quickly and you’ll be surprised just how quickly.”

This evening I had the opportunity to put this to the test.

As many of my readers will know, I am some months into building a large system that I hope to take to market very soon.  This system uses authorisation keys to set (and update) the user count and the expiry date in the system.  It is nice feature in the application, but it is not overly clever.  However, I find myself having to manually create the authorisation keys from time to time and this was becoming tedious.

I therefore decided to build myself a small application in OpenInsight 10 to help me to generate the authorisation keys and then to keep a history of who has had keys, when, with how many users, etc.

Whilst I did not time this mini- project, all of the following has been achieved by a junior application developer (me) in one evening.  That includes defining the application, building the three data tables, the four forms and all of the popups, messages, etc.  It also involved writing two commuter modules to support the Customers and Key Generation forms.

As is usual for my systems, the application operates from a main MDI Frame window, as shown below.  Granted, I need to tidy a few things up (like the menus), but remember this is an example of what can be achieved in a few short hours and by a junior.

The MDI Frame is used to display all of the application’s windows and these are launched from the three buttons on the toolbar.  The fourth button being the Exit button, which closes down everything.  All of these buttons are operated by CLICK quick-events.  i.e. I did not have to write any code to get anything working in this form.  In fact, it does not even have a commuter module defined for the window.

You could say that the MDI Frame window is a NO CODE form, but that is a private joke which anyone that follows the Google Pick discussion forum will understand ;).

KeyGen-1

The next form is the Customers form, which enables me to capture some basic contact information for my customers.  At the bottom of the screen is a table which uses some symbolic fields, a relational data table and a relational index to display all of the authorisation key records that are linked to the Customer.  This enables me to see when  keys have been generated, the user count and the expiry date for that entry.  It will build into a history of the license over time.

Again, I needed to write very little code to operate this form.  The code is pretty much limited to a Changed and a Clear event to set the toolbar buttons from disabled to enabled (and vice versa), Click events for the Cut, Copy and Paste buttons and a Click event for the Email Address label.  So very little code and what code there is in the commuter module is very basic code.  To be honest, most of the code was pulled in from my commuter module template, which already had the code for the Cut, Copy and Paste buttons and to enable and disable the Save, Clear and Delete buttons accordingly.

KeyGen-3

The Customer ID label will, when clicked, display a standard record lookup window and when the Email Address label is clicked the user’s email client will launch and the system drops in the email address automatically.  Otherwise the buttons all drive the system and the combo boxes are all populated from the System Codes data table.

KeyGen-4The System Codes window is pretty straight forward with (not including the toolbar) only two key controls which use just three dictionary items (fields) in the database.

“Again, this is a no code form where I do not even have a commuter module defined.”

The combo box is populated using the Auto-fill feature in OpenInsight, which means that the pick list will always be up to date as new code categories are added.

The user then simply adds a new code category (COUNTIES in the example) and then in the table, they enter a MultiValued list of code and descriptions.   As soon as the record is saved, those new descriptions are available to the users in the Customer’s data entry form.

KeyGen-2

The last and most complex window is the Authorisation Key Generator window.

The form itself is not at all complicated and it was very easy to build, but the commuter module behind the form took some time for me to build.

The form uses my usual quick event to launch the Popup (record lookup window) and this in turn reads (displays) the record in the form.  A similar popup is used to select the Licensee’s record ID and to write that to the appropriate edit line.  When the Licensee’s ID is chosen the Licensee’s name is displayed.  This is a calculated field (a symbolic) which brings together the customer’s First Name and Last Name from the Customer’s data table.

KGImage-5The system has been designed to cater for 1 to 9,999 users.  A message will display if the user tries to enter 10,000 or more users.  Again, the message (as shown) is created without any code and it is called using only a few very short lines of code.  The code simply checks for the number of users and then it makes a call to display the saved message if the user count is over 9,999. 

The calendar button launches a standard OpenInsight 10 calendar, from which a date can be selected and this is written to the Expiry Date edit line.  The buttons on the toolbar are all Quick Events.

Once the User Count and Expiry Date fields have been completed, the Key button on the toolbar can be clicked and this will format the authorisation key using certain random  characters and formatted with hyphens.  The authorisation key is truly random, with a unique key being generated every time the key button is pressed, even when the user count and expiry date does not change.

Anyway, it is now getting late and I’ll leave the following items for tomorrow evening:

  1. I need to configure all of the menus.  The system is run by the buttons at the moment.
  2. I need to make sure that an expiry date is a date in the future.

It will then be completed and ready for use.  Not too much left to do then, a nice little authorisation key generation application done and a good evenings work.

All thanks to OpenInsight 10 and how easy the tool set makes it
to build systems like this 🙂

Fiddlesticks – More code to remove :)


didyouknowoi

So, Andrew at Sprezzatura really made my day with their latest blog posting.  As a non-programmer, I tend to do things how I was taught.  Sometimes I learned those lessons ages ago and I never think that there might be better and easier ways of doing things.

Andrew’s latest blog posting came literally a few short hours after I’d been cutting code to manage the Pop-Ups in my application and have them pass the ID to the appropriate control and read the record to display the data on screen.  It’s only a dozen or so lines of code, but after reading his blog posting, I now have a whole new way of interacting with pop-ups and I finished the day with a lesson learned and a little more OI10 knowledge.

The result is, that I now need to go back to my new OpenInsight 10 (OI10) application and rip out even more code in favour of using the options that OI10 now exposes in the quick events for most controls.  The clear benefit however, will be less code for me to maintain (or should I say mess up) and the use of professionally written code behind the scenes, easily preferable.

Just another example of how OI10 will definitely help me to produce better and more reliable systems, and much faster than before.

You can read Andrew’s blog article, which takes a first look at OpenInsight 10 here.

So, what has changed in OpenInsight 10?

Bob Catalano has written a nice summary of the features and benefits of OI10.  This is available on www.revelation.com and I have also copied it onto the RevUK website here.  This text is also being picked up on Social Media and other places and shows how exciting this new OpenInsight release is.

If you are an existing OI developer and you want to know more about the wealth of changes to the presentation layer, etc., then Carl’s Building OpenInsight 10 blog is an absolute ‘must read’.

Bob has also provided a number of new getting started documents which now ship with the OI10 software.  This includes guides for non-OpenInsight MultiValue developers who wish to explore using OI10 as a front end to their existing MultiValue databases (U2, D3, QM, etc) and SQL developers which would like to interface to their SQL databases.  There is now a brand-new data connector for some cloud databases, such as Couchbase, all with Quick Start Guides.

If that is not enough, please feel free to contact your local Revelation Software office and we’ll be pleased to take your questions and provide you with some answers.

OI10 really is ground-breaking and it’s set to make Windows and Web Application Development even easier for professional developers and hobby developers, like myself.

 

New Video Uploaded


youtube_channel

Hopefully most of my blog readers will know about my YouTube channel for OpenInsight videos, but you might not necessarily be aware that I have created a brand new channel for my OpenInsight 10 related videos.  This new channel has been created to highlight the difference between the old OI9 based tutorials and the new ones that will be coming soon for OI10.

Anyway, today sees the next video go live.  This one is a little more about self indulgence than anything but it does show what you can achieve in OI10 in a very short amount of time.

As many of you will know, I have been deep into GDPR compliance.  Whilst RevUK is fully DPA (Data Protection Act) compliant, the forthcoming GDPR requirements mean some procedures have been tightened up and accountability measures introduced.  This has resulted in a brand new GDPR compliance document and, from that, I decided to further beta test the OI10 beta 7 release by building a new GDPR module into our bespoke contact manager.

This new video takes a quick look at what I built over a couple of evenings and it shows just how quickly OpenInsight can help you to enhance (or build) your applications to meet ever changing business requirements.

10 out of 10 for any of you that catch the spelling mistake and tool tip error ;).  They have been corrected in the software but I did not have the time to reproduce the video.

If you would like to know more about OpenInsight, O4W or how you can get a bespoke software solution to support your business, please drop me an email and I’ll be pleased to get back to you.

In the meantime, please subscribe to my new YouTube channel to ensure that you see the new OI10 Tutorial video series as I get them produced and uploaded over the next few weeks following the final OpenInsight 10 release.

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.