PUG Challenge South Africa 2019

06 March 2019

We were proud to be part of the PUG Challenge from 6 - 7 March 2019 in Midrand, South Africa. Mike Fechner and James Palmer represented Consultingwerk.

Mike Fechner presented:

Patterns for migrating fat client GUI applications to stateless, n-tier, web-enabled applications
Got that old ABL fat client GUI (or TTY) application? 
Considering moving to an n-tier architecture? Progress web client or browser based? In this presentation we’ll introduce patterns for solving common challenges like application state, record validation, transactions, input blocking etc.

ABL structured error handling best practices, and OE 11.7/12.0 update on structured error handling
In this presentation we’ll go beyond the syntax element of structured error handling and discuss best practices for using structured error handling in new and existing code. We’ll also demonstrate latest enhancements to the ABL released in OpenEdge 11.7 and

An introduction into managing dependencies in OOABL applications – or OO patterns every ABL developer should know
Feeling that your OO coding does not deliver on the promised easy of maintainability of the application? Trying to avoid that OO spaghetti-monster? The management of dependencies between your classes is key to produce OO code which really improves the development process and makes applications adaptable, customizable and testable.

SmartComponent Library – The OpenEdge modernization framework
The SmartComponent Library framework is the developer framework for OpenEdge GUI for .NET, Angular web applications, Kendo UI, mobile devices, RESTful clients, OpenEdge BPM and Corticon designed to modernize existing OpenEdge applications as well as to provide the foundation for new projects – in the cloud and on premise. In this presentation we will demonstrate the developer experience provided by the SmartComponent Library framework. The tooling simplifies the development of a state of the art Angular web frontend, a NativeScript based mobile frontend and a desktop client.

James Palmer spoke about:

How heroes navigate the query minefield
We’ve all been there. We create a clever piece of Progress code only for the users to hate it because the particular combination of options they want to choose results in a query that takes ages to return a few results. 

Query writing can be a minefield. 

  • Programmers design for what they anticipate;
  • Users don’t necessarily correspond to that design;
  • Users don’t have clear understandings of what they need;
  • Trend is toward richer and more flexible screens;
  • Table sizes are growing;
  • Legacy code was written by programmers who didn’t think things through.

The combination of these things can lead to frustrated users who create what they think is a simple request which takes a long time to run, and can even impact other users too. 

This session will demonstrate the use of tools such as ProTop and client logging to examine a query’s efficiency. In particular we will look at how to see how many records a query reads vs how many it returns to the user, and what indices it is using for the job. 
We will then look at some tips and tricks on query design to help you get the most out of your application with a little bit of forethought, and hopefully without the necessity to add new indices (assuming sensible ones are already in existence). 
This is not a hyper-technical session or a complete solution to a problem. It is a set of practises that any developer can put into action on a daily basis to produce better queries and become the heroes of their customers.

Back to the future (why you should upgrade)
Ask a question in the Community or another forum, and the first question you’re asked is what Progress version you are running. If it’s not reasonably up to date then you’ll be encouraged to upgrade. 

Due to a change in jobs I had to move backwards in Progress versions from 11.5 to 10.2B. There are so many new features and improvements that have been brought in that I missed on a day to day basis. 

Since 11.5 a whole raft of new features have been added to the product. So what are they, and how can I use them to justify an upgrade? We’ll look at everything from DBA features and performance improvements to developer tools. It won’t be a comprehensive overview by any stretch as there has been a huge amount of improvement, but it should provide a good list of arguments for upgrading as soon as you can. 

The Captain’s Log
We all know the scenario: our code’s not working, but we don’t know why. Surely there must be a way of getting more detail to debug the problem easily? Maybe we revert to adding messages through the code. Maybe we step through it visually. Maybe we add complex logging to it. But then, how do we easily control whether it’s on or off? 

Client logging is the tool you’ve been looking for. If you already know about Client logging, then this talk is probably for you. If you don’t know about client logging then this talk is definitely for you. 

We will look at the various ways we have of switching on Client logging on a client session. We will take an in-depth look, with examples, at the output you get from all the plethora of options available to you, including what each logging level adds to the output. We will finish with some recommendations of what you should capture as a minimum to improve your ability to debug problem code, particularly in scenarios that are only reproducible on a client session in production. Let’s do all the hard work of investigating the options available together, so you can implement what you need immediately when you get home.

By the end of the session, you, the captain of your code, will have all the information available to you to chart your course forward with confidence knowing that whatever trials are thrown at you, you will fix them with ease. 

I’m sorry, I haven’t a clue - DBA basics for the non DBA
Is that your response when it comes to Database Administration activities? Do you let your system run, hoping beyond all hope that nothing goes wrong, and that when it does you’re out of the country sipping Sangria on a sun-kissed beach? 
What DBA activities do you really need to know to keep your system running? What is useful for the part time DBA? We will go through the basics of DBA activities with some background to help you be on the money as soon as there’s a problem, rather than having to panic and call the experts right away. We will also look at some activities you can introduce to hopefully reduce the risk of things going wrong.

We will look at:

  • Online backups and restores;
  • Enabling Large Files;
  • Adding database extents online;
  • Enabling After Imaging online;
  • Truncating the BI (and changing BI Cluster size and block size);
  • Enabling the AI Archiver and configuring it;
  • Database monitoring options;
  • Anything else I think of in the next few months;
  • Space for questions and answers.

So, if you’re doing DBA work to keep your system running, or if you’re doing it because nobody else is, or you’re just interested in getting started in the world of a DBA, then this is the session for you. 

How to write good Unit Tests
Unit Testing tooling is available to all developers who are on a reasonably modern version of Progress. We will get our hands dirty with writing actual Unit Tests and looking at how to make sure they are good tests. What is a successful test? What is an unsuccessful test, and how do we ensure that this information improves the quality of the code that is delivered to customers. Customers want code changes delivered with increasing frequency, but of course do not want regression errors or bugs within those releases. This is only possible with good Unit Tests, so join us as we look into this highly useful topic together.

More Information