The event was held at the same location as last year, except that last year it was a Sheraton and this year it's called Philadelphia Marriott Old City, (Marriott bought out Sheraton in 2016 and has been upgrading the old Sheraton hotels since.) The event ran from Oct 28th to 30th. This is the third year Appeon did it themselves, and they really seem to have worked out all the kinks. It was an excellent conference.
As with last year, you could check in for the event on the evening the day before the event started, which I did. The only real downside this year is that the badges didn’t have the person's name printed on them. It does have a QR code on the front which can be used to access the session catalog, and the back has a map showing how to get to Monday night's special event. I suppose that made check-in much easier as they didn't have to search for a particular person's badge. However, I would have liked to have an option to include a name. Perhaps a white strip at the bottom where we could write it in with a Sharpie or a clear plastic envelope or some other means of attaching a business card. A number of us did find a solution for that on our own.
Same as last year, biscuits with egg and sausage, fruit and coffee. Better that most conference breakfasts. At least it worked for me. I took a couple of them and then just ate the egg and sausage.
The Next Generation of DataWindows
Armeen gave this presentation, and he started off by discussing the trend in application development from mainframes, to enterprise apps, to departmental apps, to software as a service (SAAS), to public/private APIs and finally to services and microservices. The point being that moving to a service based architecture is the future of application development.
He then talked about how the Appeon .NET DataStore that is currently being offered is different from the DataWindow.NET that Sybase did. The old DataWindow.NET was unmanaged code, Windows only, tied you to the DataWindow designer, had no separation of concerns, was really slow and was single threaded. The new .NET DataStore is managed code, supporting both .NET and .NET Core, is (with .NET Core) cross-OS, is IDE independent, has a multi-layered approach to separate concerns, is multi-threaded and is 2 to 5 times faster. Armeen announced that beginning with 2019 R2, SnapDevelop will be provided with all editions of PowerBuilder.
Migrating Three-Tier Application with the .NET DataStore in C#
This session was by Don Clayton of Intertech Solutions. His company has been involved in a large number of PowerBuilder migrations, including one last month where they migrated a customer from PowerBuilder 3.0 to PowerBuilder 2019. The focus of this presentation was on a migration they did for a customer called PEMEX. The original application used RPC calls to a C application in an NXTera Application Server. They replaced that with a REST API calls using the new .NET DataStore and C#.
Making REST APIs RAD
Armeen then spoke again, this time discussing how enhancements they've introduced in to SnapDevelop for 2019 R2 makes it possible to take an existing DataWindow and not only create but also test a MVC-based REST API written in C# from it in less than 120 seconds.
Govinda then gave a live demo where he demonstrated the enhancements Armeen described, and created and tested the REST API with 30 seconds to spare. Armeen announced that the DataWindow Converter and new C# scaffolding feature will be available in all editions of PowerBuilder except the lowest level.
Govinda then did a more detailed review of the new C# scaffolding feature. One of the things he noted during that is that the new DataWindow Exporter (launched from within SnapDevelop rather from within the PowerBuilder IDE) no longer generates separate SRD files. Instead, it embeds attributes within the C# class file that contain information from the DataWindow on how to retrieve the data. In addition, XML export templates are exported as well in XML format and referenced in the C# file.
Accelerating Migration to C#
Armeen then discussed the PowerScript Migrator, which will be introduced in 2019 R2. Rather than attempting to do a bulk migration of an entire application, the PowerScript Migrator is meant to be used to migrate one function/event at a time. It attempts to convert the PowerScript code directly in to standard C# methods whenever possible. A "bridge" library is also provided to deal with those situations in which there is not a C# equivalent for a PowerScript function or data type and Appeon has figured out a way to provide a substitute that doesn't degrade maintainability of the C# code.
Appeon estimates that 80%+ of PowerScript code can be directly migrated to C# using the PowerScript Migrator, though you may get better or worse results depending on how complex your code is. Their estimates are based on the amount of migration they were able to accomplish using code provided to them by a number of different customers. Armeen indicated that the PowerScript Migrator will be included in the highest edition of PowerBuilder 2019 R2.
Govinda then did a demo of the new feature. He showed an impressive list of a wide variety of different language constructs in PowerScript and how they were all converted to C# without difficulty.
1. basic syntax
- any type
- enumerated data types
- choose case
- create statements
- calling functions and events
- try/catch blocks
- system function
- retrieve, update, insert, delete, etc.
- getitem, setitem
- getting and setting properties
- find, sort, filter, etc.
- drop down datawindows
3. embedded SQL
- traditional, including commit and rollback
- stored procedures
- dynamic SQL (all four formats)
Migrating an Existing PowerScript Target to a C# Web API Solution
This session was by Torsten Matschull of CTS Eventim. He discussed their migration to a C# Web API solution using the new .NET DataStore and Antlr to facilitate the conversion of PowerScript to C#.
Because the code is now in C#, they are able to use standard DevOps tools to provide more robust deliveries more frequently. They can now use nUnit for testing, SonarQube to do static code analysis, automatically do builds by pulling source from Git, compiling it and deploying it with Docker which is managed by Kubernetes and Helm. The containers are then eventually deployed to Azure and the services managed via Kong.
PowerBuilder Product Management
The next presentation was by Julie Jiang, who discussed their agile development cycle for producing frequent releases of PowerBuilder and what their plans were for future versions.
She showed the agile release cycle they have planned, including the 2019 R2 release in early 2020, a 2019 R3 release in late 2020 and a 2021 release sometime in 2021.
For PowerBuilder desktop, she noted in particular
- New WebBrowser Control
- Native use of C# assemblies in PowerScript
- Addition of Base32 and Base64Url encoding and decoding to the CoderObject
- Support for Windows Server 2019
- Support for Oracle 18c
- Secure runtime DLLs
- Bitmap function
- 64-bit TX Text Control
- RESTClient Retrieve with Composite DataWindow
- RESTClient RetrieveOne to Structure
- Support for MSOLEDB
- Cloud Desktop App
With regard to making the IDE more efficient, she noted:
- New Picture Selection Tool
- Search in Browser Window
- Open Folder RMB menu
- Enhanced Source Control
- Separating PB runtime from the IDE
- 64-bit debugging
- Feature stability and refinement
- Tabbed editor
With regard to UI Modernization she mentioned:
- Theme setting at window or user object level
- Enhancements for window title, border and scrollbars
- New RibbonBar control
- Feature stabilization and refinement
- Modern graph types
Foundation Makeover with PowerBuilder 2019
This session was by Tom Mills of Foundation Software. He demonstrated how they were making use of the C# Web API and the UI Theme features in 2019 to modernize their application. Foundation Software is an ISV that markets a module based accounting system with about 3 million lines of code and over 16,000 objects.
He did mention that they did need to tweak the provided UI templates slightly to get the exact look and feel they wanted. The C# Web API was used to expose services for their application to third parties. They found that because they were using PFC, they were able to modify the PowerBuilder client to use the new service by modifying two events ( pfc_retrieve and pfc_update ). They also made use of the new HTTPClient and JSONPackager object to make the calls.
New Features In PowerBuilder 2019 R2
In this session, Govinda gave a brief overview to the major new features for traditional client/server and cloud enabled desktop applications in 2019 R2. The particular new features he focused on were:
He demonstrated how to build a RibbonBar using the new designer, as well as how to modify it dynamically at runtime through PowerScript.
UI Theme Enhancements
He demonstrated the window and control level specific theming capability.
C# Class Importer
He demonstrated the C# Class Importer, which allows PowerBuilder to use .NET assemblies directly without having to first create a COM Callable Wrapper for them.
The WebBrowser Control
He demonstrated how the new WebBrowser control outperforms the old OLE WebBrowser for things like rendering modern web pages (Facebook was used for the example), support for HTTP2, higher HTML5 scores, running HTML5 games and features such as the Gravity effect.
12,500-User Healthcare Cloud Solution
This session was given by Marco Meoni, an independent consultant. He discussed AlfaBox, a Software as a Service (SAAS) application deployed to 40 healthcare institutions in Italy with (as the session title indicates) over 12,500 users. The system uses PowerServer to provide a web UI.
Lunch was an Asian salad and a wide variety of meats. All very good.
Like last year, this year there wasn't a conference app, just a QR code on our badges that took us to the session catalog online. It looked fine to me when I accessed on either my iPad mini or my Samsung 8 Active, but a number of people complained that they had difficulty using the session catalog from the web site on their mobile devices.
The session rooms were once again adequate for the number of people attending, at least in the sessions I've attended so far. Once again, power devices with a multitude of both 110 AC and USB outlets were available at the front and the rear of the rooms.
The only session I attended in the afternoon was my own "UI Themes in PowerBuilder 2019". One significant new feature added here (and which I demoed in my session) was the capability in 2019 R2 to do custom theming at a window, control type and even individual control level.
Last year I complained because we only had the microphone at the podium and I tend to wander around while I'm presenting. That was addressed this year. We not only had wireless microphones, but they also provided wireless presentation pointers. Which was a good thing because I forgot my presentation pointer this time.
Essentially a two-part evening event, there was a dinner in the hotel from 5:30 to 7:00 PM.
Afterwards there was an event at Kick Axe Throwing. As with last year, I needed to do some run throughs for my presentations the next day, and so I didn't attend the second event at all. I did have some of the people who did go send me pictures.
I liked having the dinner split from the event, as I seem to remember last year there was a significant wait until food was served and rather long lines for a limited selection. Having the dinner served separately meant we got it sooner, got it faster, and had better options.
Day 2 - Sessions
My day was packed on day 2. I have one 4-hour session on the new REST Web API feature that covers it from end to end, including development, testing, deploying and use from a PowerBuilder application. Significant this time around were some features that are being added for 2019 R2 and I only got my hands on a couple of days before the conference (hence the need for my working on those presentations still the day before). Chief among those are:
- the C# scaffolding feature (which can generate the service and controller in C# for you based on a model),
- the PowerScript Migrator, which allows you to select a function or event in a window or non-visual object and convert it almost completely to C#
- the Web API Tester, which allows you to not only test the Web API using the REST endpoint, but also to step into the debugger to determine why a service is not doing what you intended
That session was broken into 2 halves, one given first thing in the morning and the second immediately after lunch. Between my first session and lunch I did another session on "Miscellaneous New Features" which was just all of the other features added to 2019 and 2019 R2 that I thought were important but that weren't large enough to warrant a session of their own. Then after the second half of the REST API session I did another smaller session on improvements in the RESTClient.
I'm not sure if it was available Monday afternoon during the break between sessions or during the morning break on Tuesday, but during the Tuesday afternoon break there were refreshments offered.
This year they did a better job of scheduling so that there were 15-minute pauses between sessions. That helped me as a presenter as I didn't end up rushing from one session to another. I also didn't experience any issues with a previous presenter running over and taking up some of the time for my session.
After the last of the afternoon sessions we had a happy hour with food and drinks outside of the session rooms.
Day 3 - Sessions
I presented two sessions in the morning, "Two-Factor Authentication with Google Authenticator" and "JSON Enhancements in PowerBuilder 2019". I then attended a session by Uwe Lappöhn of CTS EVENTIM Solutions GmbH on "PowerScript Static Code Analysis with SonarQube".
My company has looked at SonarQube for Static Analysis of our PL/SQL Code, but hadn't considered it for PowerBuilder code because we thought it wouldn't handle it because we didn't know of a plugin for SonarQube for PowerBuilder. CTS EVENTIM wrote their own and it seems to be working well for them.
One-on-One Meetings with Appeon
There wasn't a product roundtable this year. Instead, Appeon staff made themselves available for one-on-one meetings throughout the conference.
Quite a few people took Appeon up on the opportunity. There were few, if any, free spots.
I like this approach better. Appeon wants to hear from their customers. Many customers want to communicate with Appeon. And this format seemed a lot better mechanism for it than the roundtables we did in the last two years.
Suggestions for next year
Different city. As I mentioned last year, there's nothing wrong with Philadelphia, but I like to see the event moved around every couple of years. Everything else I suggested last year they addressed one way or another, and I really don't have anything else to add to it.