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 🙂

Advertisements

Sorry


PropertyGrid2Someone asked me a couple of days ago, why I have been so quiet on the blog, etc.  The truth is, that I have been heads down for the last few months building a new system for a client.

This system is taking all of my time (including a lot of my personal time) and finding time to update the blog has come second place.  No excuses, that is just the way that it is.  So mixed with OI development, photography gigs and sleep, there has been little time for anything else.

That said the project is coming along well and I continue to be amazed at what a junior application developer can achieve with OpenInsight 10.  Yes, I continue to make mistakes but I continue along the learning curve and things are definitely getting easier and quicker.

A fun week playing with the Internal 10.0.7 pre-release.

Just this week, I was given access to the internal 10.0.7 pre-release.  The subsequent testing had me find a small bug and yes, I did do something unexpected, and yes, I am that monkey and if you give me a nice shiny new gun, well, I ‘will’ shoot myself.  Anyway, this has given me with a few minutes to take a step back and catch up with the blog and other things.

However, despite the bug (which has already been diagnosed and fixed) 10.0.7 looks to be another big step forward and it is definitely getting to the point (in my opinion, it’s there now) where existing OpenInsight , ARev and MV developers more widely should be taking a close look at using OI10 modernise their development and their systems.

Snakes and Ladders


pythonlogo

Over the last year or so, I’ve heard more and more about Python and how development tools need to support the language.  I’m told that students are leaving college with Python experience and it is therefore a great way to bring new, engaging and dynamic ideas into the development community and the MultiValue market could sure do with a dose of that right now.  In addition, some of the MultiValue manufacturers are riding the current wave and actively promoting their support for Python.

Whilst there have been questions from the MultiValue community about who might be using Python, I’m yet to come across many people who have actually taken the plunge and it’s been a largely mute topic within our own Revelation community in the EMEA region – until this week though.

It is no secret that many OpenInsight developers are remaining in position and not moving around too much.  Coupled with the fact that the MultiValue market place is getting older and developers are retiring (it is an inevitable fact), and we find that we need to resource projects from outside of the community.  Just recently Andrew, from Sprezzatura, has completed another series of tutorial workshops for another RevUK client.  Like the previous workshop, this one included a number of highly skilled professional developers from India.  The first OpenInsight VAR was extending their internal team using their own developers in India, this time it was a pure outsourcing deal to expand the development and support resources.

Enter the snake (Python).  Yet another OpenInsight development house looked outside of the community to expand their team and the chosen candidate has been getting to grips with the toolset ahead of starting their position later this week.  As part his first steps with OpenInsight, he asked about support for other database technologies and this week Python finally came up.

It was only to be a matter of time before someone asked me about
OpenInsight and python.

A quick email to support and Bob Carten got back to me with the usual response that I’ve become used to from the OI development team, “Of course we can do that”.

The specific request was whether Python scripts could be easily and reliably called from within OpenInsight using the Quick Event tied to a button.  The pretty straight forward and basic request resulted in a detailed reply from Bob:

“Yes, you can call Python scripts from OpenInsight.  The simplest way is to use the utility ‘RUNWIN’ service:

    cmd = 'py ': quote(filename)
    call Utility("RUNWIN", cmd, 0)

The attached py_shell (Bob included this as a .txt document in his reply email to me) is an example program which would let you pass in the name of a python file or just the body of a python script.  At the end it just calls Utility “RUNWIN”, the rest is window dressing.

However, that window dressing demonstrates some common techniques we use for writing object-ish programs in OpenInsight.  The typical use case for these techniques is creating commuter modules for OpenInsight forms.  We use the term “commuter module” to describe a program which handles all the events for a window.  We have a standard quick event which will call your commuter module.  For a window named “MYWINDOW”, the commuter module is a Basic+ program named MYWINDOW or MYWINDOW_EVENTS, which follows some conventions.  The attached RTI_LH_STATISTICS_EVENTS program (again attached in Bob’s email to me) is an example of a commuter module.  You can cannibalize it for your own modules.  The relevant parts are from line 1 to 81, which is where it implements the “interface” for commuter modules.

See https://www.revelation.com/o4wtrs/KB_Articles/KB1040.htm “

Please drop me an email if you would like a copy of the py_shell.txt and rti_lh_statistics_events.txt files that Bob included in his email.

So that’s the snake, what about the ladder?

OpenInsight 10 is giving developers a real step up the ladder when it comes to Rapid Application Development.  So much is done for you and I find myself simply setting a property in the Property Panel, rather than writing, debugging and maintaining lines of code.  Better still, I’m then using optimised professionally written code and not code that I have cobbled together – well I’m no professional developer.

Anyway, I’m told that support for third party code gets even better in OpenInsight 10 and Bob is using the new technique a lot as part of RTI_GIT, which is one of OpenInsight’s native support programs for Git.

More on that in another posting, coming soon.

OI10 Conversion Process and New Examples Application


OpenInsight 10 LogoOK, I lie ever so slightly, the new Examples application is the old examples application but with a slightly enhanced user interface but it certainly feels new.

I have now converted a few applications from OpenInsight 9.x to OpenInsight version 10 and I’m always pleased with the results.  It started with me cutting my teeth on the EXAMPLES application and then I moved on to my larger RevSoft UK Contact Manager.  The later benefited from a couple of weeks of evenings working on the user interface before I deleted the old 9.4.2 version and moved 100% OI10.

So, a few people have asked me to produce a video of the conversion process and I’m pleased to announce that both that video and a look at an early version of the new examples application is now online and copied below.

Please note that this is a relatively new YouTube Channel.  I decided to drop the old one with the old 9.x videos in order to provide a clean break between the two and avoid confusion.  For this reason, please subscribe to the new YouTube channel for periodic updates as I produce more OI10 videos.

 

My App’s now full of Bugs :)


BugSo, I am a week into my OpenInsight 9.4 to OpenInsight 10 (OI10) conversion which is basically just playing around with the interface and I really like how things are going.  I have a brand new colour scheme and ripping out loads of code.  I was keeping a tally, but I’m about 2/3rd of the was through and nearly 2,000 lines of cobbled together code have been deleted in favour of setting properties and thereby using professionally written code to run my application.

Last night, I managed to introduce a long overdue and much longed for Progress Bar which runs whilst my data grids are loading during system startup.  A trivial task for most of my blog readers, but quite a result for me all the same.  It’s nice when you manage to achieve something after a struggle and this is one such case.  It does put a smile on my face every time I launch my OpenInsight 10 application, so it’s well worth it in my mind.

Progress Bar

Using graphics in OpenInsight to build some really nice interfaces is child’s play now.  the key is having a good graphics library to pull from and I’m extremely lucky to have access to Icon Experience‘s graphics library.  With nearly 3,000 images in the library that I’m using, and they have several libraries and numerous sizes of each image in each library, they have a graphic (.png and .ico) that just about meets any requirement when building an application.

Anyway, I’m pleased to now be 100% OpenInsight 10.  Since rebuilding my computer, I have found no reason to install OpenInsight 9.4 and I’m now both developing in OI10 and using my Revelation Contact Manager on a daily basis running under OI10.

Great job guys.

I cannot produce any videos of my progress thus far because I’m working with live sensitive data.  However, once this project is done, I will look to put a video or two together using the old Clinic application that I used for the OI9.x tutorials.  Watch my blog for more information and video links as I begin that project.

If you are an OpenInsight WORKS subscriber, you can get the OpenInsight 10 Beta 4 software from the WORKS area on www.revelation.com.   If you are not a WORKS member, please drop me a line and I’ll be pleased to arrange a time to talk a little more about OpenInsight 10 and the supporting WORKS subscription service that underwrites the development suite.

OI10 Milestone Reached


OI10logon

As many of you will know, I have been diligently working with the OI10 Alpha releases and more recently the Beta’s which include the internal releases and those released to our WORKS subscribers.

My initial aim was to assist the development team at Revelation, working mostly with the Forms Designer and it’s ossociated tools, in catching as many issues as possible before we go to a final release.  When I saw the conversion tool, I began to dare to hope for a one click conversion, at the same time knowing that such a thing is usually far from possible.

However, with the release of the Beta 4, I am alot closer to that elusive one click conversion. In fact, I’m ‘alot closer’ than ‘alot closer’.

Like many of you, on Friday, I downloaded the Beta, ran through the install, created a new application and waited expectantly as the system ran through the conversion of my contact manager that I use at Revelation day in and day out.  The new conversion tool wizzed through the entities, with lines flashing up on the right side of the new conversion window and the categories of items to be converted were slowly and steadily checked off . . . done, done, done, done.

I had a couple of red categories, but a quick check of the log showed that these were items that I did not have to worry about.  Legacy items that I really ought to have deleted prior to the conversion, but easily deleted in OI10.

So, how did we do?

Much, much, much better than I had hoped.  Sure, my splitter bars no longer work, but I knew about those and I’ll blog about them later. My legacy and poorly written code is fighting OI10 in one or two areas but I’ll be removing hundreds (if not thousands) of lines of my cobbled together code in favour of OI10’s professionally written code that will be better optimised and correctly error trapped.  So those issues are not really issues for me and they don’t stop the application from running.

So, as of Friday afternoon, I was both developer and user of my system under OI10.  I’ll be removing code and changing some of the interface components (for example, my combersome three state buttons and associated GOTFOCUS and LOSTFOCUS code, in favour of the new Glyph buttons), so further developing the converted application.  Plus, I’ll be using the application to support my job role.  Something that I thoght would be a little way off and following a hefty conversion task (project).

The guys are doing an outstanding job with OI10 and the project really has turned a corner.  So many things are finally coming together and it looks like some of the technologies that the guys have had to wait for, are now available to them and the toolset is going forward in leaps and bounds right now.

They are also cracking on with the reported bugs, leaving wishes for later.  For example, I have cleared down no end of officially reported bugs in the OI10 bug tracker.  But, what you don’t see is the internal emails and reports that I send to the guys.  Carl had a ten page report for the conversion tool for my system at the initial internal release of the new conversion tool.  By the final release of the beta 4 (in you are a WORKS subscriber, that is the one you can get your hands on), this was down to six items and a couple of new ones that I have found. [Edit – Oneof those items was user error and another related to my code].

Remember, we are still in beta so issues will remain, but I’m blown away by what OI10 is proving to offer developers.

I’m often asked who is a typical OpenInsight developer and . . .   Well, lets leave that for another posting, I’m keen to get back into working on my brand new user interface – or should I rephrase that to, “the old one simply reworked” – but it feels brand new.

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.