Ask Reuben – October 22, 2025

300th Article

In celebration of my 300th article, I made up some questions.  Ask myself anything!

This is the 300th Ask-Reuben article.  When I got to the 100th Ask-Reuben article, I thought about doing something special but as a cricketer in my younger days, and my Indian audience will appreciate this, you don’t stop at 100, you put your head down and start again.  I did think of doing something special for my 300th article and I had an outline in mind when I thought I’ll check what I wrote for my 200th article and realised that a lot of ideas I had in my mind I had incorporated in my 200th article.  So in conjunction with this article, please re-read my 200th article and I’ll add some similar questions and responses to form this 300th special, all with the aim of giving you some links to documentation and past articles.


How do you know so much about Genero?

Being on the other side of the world from the developer team, I don’t have the luxury of being able to walk around to the developers desk and ask a series of questions.  Right from the start with my experience of Genero, first as a customer and then representing Four Js on the other side of the world, I have had to decipher what information I can from the available documentation.   Two things that have helped in this area

  • as I started before the arrival of ui.Dialog and ui.Form methods, I had to write library functions to do the equivalent via manipulating the AUI Tree .  Dong this gave a good insight to the Dynamic User Interface.
  • picking up early on how the documentation was structured and being able to interpret the developers intention.  Being willing to read above and below the section of the documentation, wether via scrolling or using the panel on the left hand side, to read more than just the section of the documentation I was on.

I like to say I don’t know everything but I know how to work the search or the links to find it.  If you want to be on my good side, if I am ever at your desk and I ask to see some documentation, hopefully you have the documentation bookmarked!.

I also have in my Studio templates, a couple of small program that I use as a starting point for any investigation.  These allow me to quickly get to a point where I can test a line of code, form attribute, presentation style.  One of the neat things about Genero Theme Customizer which is currently in EAP is that I can use that to quickly test GBC Customisation.

If it makes people feel better, 20+ years later I still struggle on the order of syntax elements in the CONSTRUCT statement too, I never get it right first time.


Is there any article you would take back or change?

It does bother me that the very first Ask-Reuben article, the title was “Cut & Paste Tables into the Clipboard” when it should be “Copy & Paste Tables into the Clipboard”.  A Cut would imply deleting the data from the table! whereas a Copy leaves the data intact.

I should also perhaps have exerted more editorial control over some of the photos used for the 1st generation of title images!


What is the best design feature you have seen?

Many years ago I administered an application that was designed with many cross checks and balances.  The sum of all the values in the transaction table should equal the sum of the balances, both for individual accounts, batch numbers, and across the board.

There was a report that was generated overnight, that would print any imbalances.  It also highlighted missing foreign keys , duplicate keys and other such anomalies.   In the days of relational databases and transaction, you’d wonder how it ever got of balance but somehow it did.  When I arrived, the report of imbalances was as big as a telephone book.  Slowly we got it back down to one page that said everything was in balance.

I’ll remember that report because if used properly, it would highlight any problems the day they occurred and gave you a lot of confidence in the system.


What could Genero developers do differently in their interaction with Four Js?

I could give the cliche answer and say always give a version and keep your support contact happy, and always try and reproduce the problem in a minimal reproducible example.  Typically an issue is raised because one attribute is perceived to be not functioning as expected, so create a small program that isolates that attribute.

However I would also say “be more aggressive”.  and “be more demanding”.  I believe there is untapped enhancements that could be added to our product and the reason they are not done is because no one asks for it.  Good examples from this come from two customer experience presentations at last years WWDC .

One presentation I stopped as they were presenting and said, you have a plain EDIT widget there to enter a color RGB value, wouldn’t you rather a widget that allowed you to select a color that turned it into the appropriate RGB value.  This resulted in the Color Picker widget that was added in 5.00.10 but even with that, I think customers could have asked for the browsers default color widget which allows a wider range of colors as per a later article .

The second was from a presentation that showed what could be achieved via GBC Customisation, but if you look at the screenshot in that linked page …

  • circular image
  • the badges in top right corners of buttons
  • the page navigation widget in bottom right corner of table
  • filter button in table

… are all potentially useful to everyone and be valuable additions to the Genero syntax.  However we don’t have the feedback or demand recorded in sufficient quantities to push such enhancements up the queue.  With Universal Rendering we only have to code such enhancements once, we are not constrained by finding a solution that fits across all four native front-ends.

You will have seen recently several user interface enhancements in the GBC monthly releases, there is potential for more.


Is there an unappreciated skill that developers should have?

Pattern recognition is one of the key skills I value.  Recognise a pattern, apply it once rather than doing variations of the same thing over and over again.

If you look at the applications in your system developed in Genero, they probably fall into a number of categories

  • a single table maintenance program
  • variations of the single table maintenance  program to allow maintenance of master detail tables
  • a starter pattern that is used for the start of report programs, enquiry programs, batch processes where the user is prompted for some inputs, typically a series of wizard screens or a single multiple dialog with INPUT and CONSTRUCT.
  • transaction data entry
  • a main menu program that is the first application a user launches each day
  • a system configuration / flags program where a system administrator can change appearance and beaviours of your applications

The key thing is to recognise there are probably no more than 10 unique program patterns in your application.  Any new program is a variation of what has gone before, and to have your development environment designed around identifying and generating quickly another program in that pattern.  This then brings consistency to all your programs.

You might also recognise that for large systems you might have divided it into modules e.g. Asset Ledger, Creditor Ledger, Debtor Ledger, General Ledger etc, and within each modules there is the same suite of programs with similar names, only operating on a different set of database tables.

Code generators, generic coding (such as fgl_zoom), pre-processor can all help developing programs quickly and consistently.


What is the best development tool you have used?

Not a development environment tool but I once created some scripts to do automated code reviews on our code to make sure that our standards were being adhered to.  Today you would use gslint but back then it was a number of scripts with a lot of grep’s.  In a team of 10+ developers it meant that no bad coding patterns slipped into the code base, and if a developer did something they shouldn’t, it was picked up within 24 hours of being checked in.


What support question irritates you the most?

When developers ask for the restoration of “Copy Visible Table”.  When pressed they will say how their users are doing the following steps …

  1. Copy Visible Table
  2. Paste into Excel
  3. Page Down
  4. Copy Visible Table
  5. Paste into Excel
  6. Page Down
  7. Copy Visible Table
  8. Paste into Excel
  9. Page Down
  10. and so and so on ad nauseum

As per that first Ask-Reuben article, a solution is possible where they can simply

  1. Copy All Rows
  2. Paste into Excel

Sadly I have never been able to persuade our developers to add such an action and so you have to add it manually.  I have also never been able to persuade our developers to add global actions either so that you only need to code it once.


What screen design irritates you the most?

The subject of the second Ask-Reuben articles, I hate it when I see numeric data that is right justified beneath a title that is left justified.  If my I had my way, one upgrade there would be an upgrade note making headerAlignment=”auto” the default value!

I also don’t like it when I see screens that are not taking advantage of all the syntax we have added to Genero forms over the years, or have not been transformed to look like they would if you were designing a Genero form from scratch.  Too often I see screens that look like they are still trying to fit in an 80×25 green screen, these might include :

  • separators such as colons between fields and labels,
  • abbreviations that are no longer necessary
  • no attempts to align
  • not using GUI widgets
  • still using Matrix
  • not using Multiple Dialog
  • not using Responsiveness
  • and to top it of still using TUI accelerators and not GUI era accelerators

Old screen designs reinforce the fact that your application is a legacy application.  A modern screen design does not attract the negative attention that old screen design styles do.


A favourite anecdote from the IT industry?

Prior to Y2K we were implementing a long overdue application upgrade.  After the upgrade, we got feedback that a report was now printing with * in the columns where there should be numbers.  Sure enough the numbers were bigger than allowed with the space available.  Easy fix, but we were curious how this report had been signed off as having passed QA…

We went back to the QA tests for this report and pulled in the person who had signed off on the report, and got them to repeat the test.  They ran the test and a one page report was generated that said something like “No records meet the criteria selected”.  The year that was in the test plan did not match the data that was in the test database.  When we put in a better year, the report in the test database also generated with “*” where number should be.  The tester marked the report as a pass because it did not crash and showed something that was correct for the data entered.  Never occurred to them that perhaps the test plan should have something that generated a useful report.

I also pulled off two April Fools Day pranks on my colleagues.  One year I edited a .4st in our development environment so that all the colors were black.  Another year I took a screen shot of our first screen, and added at the beginning of our main menu a full screen window that displayed this image upside down.  In both cases an interesting exercise of what you could do with a .4st !


What changes can we expect with Ask-Reuben in the future?

I would like to get our developers contributing some guest articles.

I would also consider doing some videos, however I do believe non-English speakers can translate a written document easier than trying to translate a video.  That is also why when doing presentations I tend to have more text than other speakers do on my slides so that more can be translated after the event.

Less focussed on a weekly article.  Like the GBC maintenance releases, skipping a month allowed them to add more into a release.  It maybe that if I get some small articles out the door quickly, that allows a longer article to be put together.