Download the PUG SA App and prepare yourself for the conference
Business track for Business leaders responsible for, and driving, business strategy – 6 March 2019 (Bartok Room)
4GL code performance workshop, part 3: Indexes
25 years in the Progress world, numerous workshops, training courses and
presentations, Mike and Peter can say with some confidence that most
programmers don’t know the first thing about index bracketing. Ok, maybe they
know the first thing, but the second and third thing…unlikely. Four they dost
not know, unless maybe they knowest two and three. Five is right out.
Peter and Mike will awe and inspire you during this 3 hour, hands-on, blow-your-mind, index bracketing workshop. You’ll learn about the differences between database queries versus temp-table queries. You’ll partake in the explanation of the parsing of those pesky parentheses. And the mysteries of and or, or is it or and, will be de-mystified. You will shake your head, raise your fist, tell us we’re wrong, maybe even cry a bit, but at the end of it all, your soul will be cleansed and you’ll be a master of all things index-y.
6 March 2019 10:00 – 13:30 | Presented by: Mike Fechner & Peter Judge
OpenEdge DBA Basics
People often ask what tasks a newly minted OpenEdge DBA should be performing? What should my daily, weekly, monthly etc checklist have on it? What’s good? What’s BAD? Where do I even look to find out? What do I need to pay attention to? What can I ignore? What should I lose sleep over? When should I update my resume? Who can help me? In this hands on workshop we will show you the way through the challenges that lie in front of you and help bring peace to your weekends and evenings!
6 March 2019 14:30 – 17:00 | Presented by: James Palmer & Tom Bascom
OO Patterns and Architecture
Writing class files is easy. Writing good class files requires a new school of thought – especially for procedural developers. In this session Peter Judge and Mike Fechner will discuss about some best practices for the OOABL. We’ll be talking about best usage of Enums, Interfaces, Parameter classes and ways to manage dependencies the CCS way. The presenters will be showing OO patterns every developer should know and know when and when not to use them. We’ll also be talking about the role of relational concepts like temp-tables and ProDatasets in a class based world.
7 March 2019 09:00 – 12:30 | Presented by: Mike Fechner & Peter Judge
Sessions – 6 March 2019
Really Bad Infrastructure Choices (and how to avoid them)
Do you have a mission critical application that needs to perform at its very best? Have you been wondering how to go about hobbling performance before you even get any users on the system? No? Don’t worry! You can rest assured that someone is staying up nights thinking of ways to sabotage your application. If nobody else is doing it there is sure to be a vendor selling snake oil lurking in the shadows.
This session will help you to prepare for inevitable attempts at sabotage by discussing the terrible choices that other people have made when implementing important systems so that you can (hopefully) avoid making those mistakes yourself. Or at least feel less lonely if management has already made these decisions for you. We will discuss such topics as why a SAN is not good for performance, virtualization cannot magically create capacity and more is not always better.
We will also talk about the good choices that get made now and then.
Tuscana Lapa | 6 March 2019 10:00 – 11:00 | Presented by: Tom Bascom
Your first Cross-platform Mobile application
A look at using OpenEdge and Microsoft Xamarin.Forms for Mobile development
Thinking of Writing your first mobile app? Why worry about going native Android, IoS or UWP or having to learn Java when you can develop with a well-known language such as C# or VB.Net using Microsoft Xamarin, a cross-platform UI toolkit that allows developers to easily create native user interface layouts that can be shared across Android, iOS, and Windows Phone.
In this session, I will show you how easy it is to get started by developing a quick real-world Mobile application with Xamarin Forms using Progress OpenEdge REST services.
Donizetti Room| 6 March 2019 10:00 – 11:00 | Presented by: Mark Davies
Application Modernisation – Why you should be looking at Web Technologies
Considering the current rate of technology advancement and UI paradigm shifts, one must concede that it is of utmost importance that highly adaptive and flexible solutions must be designed and developed. It is vitally important that the solution architecture is such, that a clear separation between data access, business logic and presentation logic exist. In the current era of software systems, it is a reality that a software solution will either be consumed on multiple devices, or the requirement exist that certain components should be exposed to multiple presentation formats or technologies.
Additionally, the competitive nature of the software market demands rapid change and deployment of solutions. User expectations evolved in a way that solutions or content must be exposed to devices or formats favorable to the end-user’s preference.
It is not practical to discard the current investment in your legacy application in favor of a redevelopment of a new solution every time there is a change in market or end-user design. As such, this presentation will be focusing on strategies and technologies that will assist in modernizing a legacy application in a manner that provides the flexibility to change and extend paradigms when and where it makes sense.
During the presentation the following core topics will be considered:
• Separation of Business Logic, Data Access and the presentation and / or integration layer
• Benefits for solution deployment
• Some web frameworks and their benefits
• The benefits of REST services and their reuse for mobile presentation
• Hybrid mobile apps vs native mobile apps and the implications and trade-offs
• Micro-services and the advantages that can be derived
Tuscana Lapa | 6 March 2019 11:15 – 12:15 | Presented by: Coenie Vermaak
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.
Donizetti Room | 6 March 2019 11:15 – 12:15 | Presented by: James Palmer
Your Current Monitoring is Not Enough: the Business Benefits of Proactive Monitoring with ProTop – (Commercial)
Through examples and real customer case studies, this session will show you how individual enterprises and partners with dozens of clients leverage ProTop to ensure unparalleled performance and up-time of their OpenEdge environments.
You’ll learn how ProTop is vastly more than a collection of simple alerting scripts. We are not spewing marketing hyperbole when we say that ProTop distills our 30+ years of experience into one package: ProTop provides information and insight that no other monitoring tool provides. Every day we learn something new and incorporate that knowledge into ProTop. Practically, this means that ProTop pays for itself in time saved by your already over-committed technical experts. ProT
op provides the hard data they need to resolve issues now, not after hours of frenzied analysis.
We’ll also show you the benefits of our web portal: with a quick glance at a single web page, we monitor the health of hundreds of databases around the world and immediately know that they are in good shape. When there is a looming issue we can quickly see what is going on and what we need to do to prevent problems. The web portal also provides access to years of your historical data. In seconds, you can zoom in on data from a specific incident or look at long-term trends over months and years.
Tuscana Lapa | 6 March 2019 12:30 – 13:30 | Presented by: Tom Bascom
The Captain’s Log (a look at Client Application Logging)
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.
Donizetti Room | 6 March 2019 12:30 – 13:30| Presented by: James Palmer
SmartComponent Library – The OpenEdge modernization framework (Commercial)
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.
Tuscana Lapa | 6 March 2019 14:30 – 15:30 | Presented by: Mike Fechner
Quick & Easy RESTification of ABL Services
Donizetti Room | 6 March 2019 14:30 – 15:30 | Presented by: Peter Judge
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.
Tuscana Lapa | 6 March 2019 15:45 – 16:45 | Presented by: Mike Fechner
Securing your PASOE deployment
In this session we will demystify the various technologies available to secure your infrastructure, OpenEdge business logic and database in a cloud deployment. We will define and provide best practices for applying Spring Security as the foundation of the Progress Application Server for OpenEdge, third-party tokens such as OAuth (the open authentication and authorization standard) and SAML (the standard protocol for web-browser Single Sign-on), accessing the database via the OpenEdge Authentication Gateway and LDAP, and the relationship and differing responsibilities of the OpenEdge Authentication Gateway and external token providers.
Donizetti Room| 6 March 2019 15:45 – 16:45 | Presented by: Peter Judge
Sessions – 7 March 2019
Scope: Buffers, Transactions and Locks
The interactions between Blocks, Buffers, Transactions, and Record Locks can sometimes seem arcane and mysterious. But there are actually just a few simple rules that govern these interactions and which control the most fundamental aspects of your applications.
Perhaps your code is plagued with errors (214), (243), (244) and so forth. Or maybe you frequently suffer from “ in use by on . Wait or press CTRL-C to stop. (121)”. Or sudden bi file growth due to “long transactions”. These are all problems that usually occur because of a mismatch in scopes.
Even if none of that is a problem for you come to this session to learn (or, for old hands, refresh your memory) about how these concepts work together to deliver scalable and robust solutions that will withstand the tests of time!
Tuscana Lapa | 7 March 2019 09:00 – 10:00 | Presented by: Tom Bascom
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.
Donizetti Room | 7 March 2019 09:00 – 10:00 | Presented by: James Palmer
SQL for a Progress DBA
A lot of businesses run Open Edge applications that need to access the data stored in the database via ODBC or JDBC to generate reports. The necessary care and feeding of the SQL92 engine that supports this kind of access can sometimes get lost or ignored. In this session we will pull together a number of tips, tricks and best practices on how to configure, manage and tune the SQL92 side of the database.
Tuscana Lapa | 7 March 2019 10:15 – 11:15 | Presented by: Tom Bascom
Understanding usage patterns of your ABL application
A sound understanding of how end-users interact with your system is vital for the following reasons:
- Understanding where to focus Development
- Understanding where to focus Testing effort
- Quantifying the impact of bugs and performance issues on your customers business
- Helps to identify potential deficiencies in business processes
- Provides empirical data to create a rational software roadmap
- Critical in identifying a starting point for modernization projects or component upgrades
- Understanding user usage volumes assist in software design and optimization of processes
- Helps eliminate dead code or potential technical debt
The session will focus on what type of metrics to track and discuss potential data points to analyse. Through examples and a deep dive into the dataset, the technical and business value will become apparent. The necessity of understanding usage patterns to shape development and testing efforts to maximize customer satisfaction as well as guide project planning and management will be illustrated.
Donizetti Room| 7 March 2019 10:15 – 11:15 | Presented by: Coenie Vermaak
Case study: Monitoring your environment – tools and tricks
A case study on the pitfalls and lessons learned with monitoring your infrastructure and environments
What works and what doesn’t?
How deep and to what lengths do you monitor.
The lessons learned and solutions found that works
Tuscana Lapa | 7 March 2019 11:30 – 12:30 | Presented by: Pieter Meyer
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.
Donizetti Room| 7 March 2019 11:30 – 12:30 | Presented by: James Palmer
Composing complex apps
One of the challenges growing applications face is managing dependencies between objects, as well as ensuring that objects are in a usable state. As more – and more kinds of – business logic objects are added, applications can become more brittle and complex. This session describes and shows approaches for reducing that complexity.
Tuscana Lapa | 7 March 2019 13:30 – 14:30 | Presented by: Peter Judge
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.
Donizetti Room| 7 March 2019 13:30 – 14:30 | Presented by: James Palmer
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
Rossini Room | 7 March 2019 13:30 – 14:30 | Presented by: Mike Fechner
Logging: From Files to the Cloud, with No Code Changes
Logging events and exceptions in an ABL application have come a long way from a bunch of MESSAGE statements scattered throughout the codebase. Today’s logging libraries allow developers to add logging messages into the application and for administrators to decide what messages should be recorded, how they should look and where they should be stored.
This session describes the ABL logging classes – what they are and how to use them – and how they can be used in your application, including anonymisation of messages and writing to cloud-based services.
Tuscana Lapa | 7 March 2019 14:45 – 15:45 | Presented by: Peter Judge
Best Practices for OpenEdge Coding
It is never too late to pick up a new idea that will improve your code. No matter what sort of code you write – Web, GUI, Character, or whatever, come to this session to hear Tips, Tricks, Hints and Suggestions for making your code better, faster and stronger than it was!
Donizetti Room | 7 March 2019 14:45 – 15:45 | Presented by: James Palmer
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.
Rossini Room| 7 March 2019 14:45 – 15:45 | Presented by: Mike Fechner