Tech Articles


FROM PROGRAMMING WITH POWERBUILDER TO PROGRAMMING WITH AI: A REFLECTION ON OUR EVOLUTION


FROM PROGRAMMING WITH POWERBUILDER TO PROGRAMMING WITH AI: A REFLECTION ON OUR EVOLUTION

Who would have imagined, a few years ago, that we could talk to artificial intelligence and ask it to help us build an application in PowerBuilder?

For many years, those of us who develop with PowerBuilder learned to solve problems in a very particular way.

We spent hours in front of the IDE, writing PowerScript, designing windows, building DataWindows, debugging events, reviewing SQL statements, and searching for solutions to errors that sometimes took days to resolve.

I remember that way of working, when every new feature represented a challenge.

If we needed a DataWindow with groupings, subtotals, filters, calculated columns, and special formatting, we had to design it, code it, and test it step by step.

If we wanted to integrate an external service, we had to study its documentation, understand the protocols, build the requests, and process the responses.

And if we needed to document an application developed years earlier, the first challenge was often understanding what the code was actually doing.

That is how we learned to program. That is how we gained experience. And that is how we built enterprise systems that are still running today.

But something is changing.

ARTIFICIAL INTELLIGENCE HAS ARRIVED IN OUR DEVELOPMENT ENVIRONMENT

Today, we still use PowerBuilder, PowerScript, DataWindows, and SQL Server.

The technology we know has not disappeared.

What has changed is the way we interact with it.

Now we can explain what we need in natural language and work with an AI agent that helps us analyze code, propose solutions, build components, detect problems, and accelerate tasks that we previously performed manually.

And this is not simply an idea or a vision of the future.

We are already experiencing it through our own developments and demonstrations.

With our PowerBuilder AI Agent, we have explored a new way of working, where artificial intelligence does not simply answer questions but can collaborate with specialized tools to analyze applications and execute development processes.

We have worked on scenarios in which an agent analyzes DataWindows, their columns, properties, and SQL statements, proposes modifications, and uses PowerBuilder tools to obtain actual results and diagnostics.

We have also developed demonstrations showing how AI can participate in generating technical documentation for our applications, using the PowerScript code itself as a source of knowledge.

With PowerBuilder, Ollama, and local AI models, we have demonstrated that we can incorporate artificial intelligence capabilities without necessarily sending our enterprise data to external services.

With our AI No-Code Visual Builder, we explored how to combine PowerBuilder, Ollama, and WebView2 to create visual development experiences assisted by artificial intelligence.

And one of our most interesting experiments has been bringing PowerBuilder development into the Android ecosystem through PB Android Low-Code Transpiler Studios.

In that scenario, we worked with Android code generation, visual editing from PowerBuilder, emulator execution, and APK generation, using PowerServer as the bridge for database connectivity.

A few years ago, many of these scenarios would have seemed particularly complex.

Today, we are exploring them with tools that expand our capabilities as developers.

BEFORE, WE WROTE THE INSTRUCTIONS. NOW, WE ALSO DESIGN THE CONVERSATIONS.

Perhaps this is one of the most profound changes.

Before, when we needed to develop a feature, we mainly thought about the lines of code we had to write.

Today, we begin by thinking about the problem we want to solve, the context AI needs, the business rules involved, and how we will verify the result.

Before, we asked:

"How do I program this feature?"

Now, we also ask:

"How can I help my AI agent understand this feature, propose a solution, and help me validate it?"

This does not mean that programming is no longer important.

It means that technical knowledge has gained a new dimension.

Because artificial intelligence can generate code, but it does not necessarily understand all the particularities of an enterprise application that has been evolving for twenty years.

It does not automatically know our business rules, our transactions, the relationships between tables, or the consequences of modifying a critical process.

And that is exactly where the value of an experienced developer remains.

EXPERIENCE DOES NOT LOSE VALUE. IT BECOMES EVEN MORE IMPORTANT.

Sometimes, we hear that artificial intelligence will replace programmers.

After working on these experiments, my reflection is different.

AI can help us write code faster, but speed does not guarantee that a solution is correct.

We can generate a DataWindow in less time, but someone still needs to understand whether its calculations are correct.

We can automate a REST integration, but someone must validate security, error handling, and data integrity.

We can ask an AI agent to modify an application, but someone must decide whether that change respects the architecture and behavior of the system.

And something even more important: we must learn to question AI's own responses.

Because AI also makes mistakes.

It can invent functions that do not exist, misinterpret a business rule, or propose solutions that look correct but do not work in our version of PowerBuilder.

That is why our job no longer consists only of knowing how to write instructions.

It also involves knowing how to guide, review, validate, and make decisions.

POWERBUILDER HAS NOT BEEN LEFT IN THE PAST. THE WAY WE USE IT IS EVOLVING.

For years, we have heard comments about the age of PowerBuilder and whether it still has a place in modern software development.

However, our experiences are showing us something very interesting.

We can combine PowerBuilder with artificial intelligence, local models, specialized agents, REST services, modern web interfaces, PowerServer, and mobile technologies.

We do not need to abandon everything we have built in order to innovate.

We can leverage decades of enterprise knowledge and bring new capabilities to our existing applications.

For me, that represents a tremendous opportunity.

Because modernization does not always mean starting from scratch.

Sometimes, it means finding a new way to take advantage of what we already know how to do well.

A REFLECTION FOR THOSE OF US WHO HAVE BEEN PROGRAMMING FOR YEARS

When I look at how we used to develop applications and compare it with what we are doing now, I see one fundamental difference.

Before, much of our effort was focused on telling the computer exactly how to execute every instruction.

Today, we can devote more of that effort to explaining what we want to achieve, exploring alternatives, and verifying the results.

But there is something that has not changed.

We still need curiosity.

We still need patience.

We still need to understand systems.

And above all, we still need that ability to solve problems that has always defined a good programmer.

Artificial intelligence does not replace the years of experience accumulated in front of a screen.

It gives us an opportunity to multiply the value of that experience.

Perhaps the future of software development is not about writing more code, but about using our knowledge more effectively to build better solutions.

And after so many years working with PowerBuilder, there is something that especially excites me:

We are living through a new chapter in the history of a technology that many considered part of the past.

We are not leaving behind our history as developers.

We are using everything we have learned to write its next chapter.

Because before, we programmed with our hands, our experience, and our logic.

Today, we still do, but now we have artificial intelligence as a new development companion.

And the question is no longer whether AI will change the way we program.

The real question is:

Are we ready to evolve with it?


Luis Avilan
DORA Sistemas México

#PowerBuilder #ArtificialIntelligence #LuisAvilan #DoraSistemas #SoftwareDevelopment #Innovation #DigitalTransformation

From Resistance to Evolution: 20 Years with PowerBuilder, Artificial Intelligence, and the Future of Enterprise Applications


Introduction

For more than twenty years, I have developed, maintained, optimized, and modernized enterprise applications with PowerBuilder.

During that time, I have seen many technologies emerge with promises to completely transform software development, replace existing platforms, and solve almost every organizational challenge automatically.

Some of those technologies introduced valuable ideas and became industry standards. Others disappeared after only a few years.

For that reason, when generative artificial intelligence began taking a central role in the technology industry, my first reaction was not immediate enthusiasm, but caution.

After many years of working with mission-critical systems, databases, transactions, security, complex business rules, and enterprise processes, you learn that not everything new automatically represents an improvement.

You also learn that an impressive demonstration does not always become a reliable enterprise solution.

At first, I resisted using artificial intelligence.

I wondered what a language model could teach someone with more than two decades of experience solving real business problems with PowerBuilder.

How could artificial intelligence understand the business rules accumulated over many years, the operational exceptions, internal processes, and technical decisions that shaped a mature enterprise application?

Over time, however, I realized that I was asking the wrong question.

Artificial intelligence did not need to replace my experience. It could help me use that experience more effectively.

It did not need to compete with PowerBuilder. It could expand its possibilities.

And I did not have to choose between an established technology and an emerging one. The real opportunity was learning how to combine them.

Read more

HTTP QUERY: the immediate future of API queries


HTTP QUERY: the immediate future of API queries

A new way to carry complex queries without turning the URL into a puzzle or presenting a read operation as if it were a write.

What happens when a query needs filters, rules, lists, and pagination, but must not change anything at all?

For years, the usual answer involved choosing between two imperfect paths. The first was to place every criterion in the URL of a GET request. The second was to send a request body with POST, even though the real intention was only to retrieve information. HTTP QUERY is designed to fill that gap: a query can carry structured content while explicitly declaring that it is safe and idempotent.

This is not a replacement for GET. GET remains an excellent choice for simple searches, shareable addresses, and clearly identifiable resources. QUERY is aimed at a different situation: advanced filters, configurable reports, catalog exploration, analytics, enterprise search, and requests whose criteria no longer fit comfortably in a URL.

IETF · RFC 10008 · STANDARDS TRACK · JUNE 2026
Read more

Hermes: an autonomous agent connected to PowerBuilder


Hermes: an autonomous agent connected to PowerBuilder

A technical demo where AI does more than converse: it observes the current DataWindow, selects tools, executes real PowerBuilder operations, evaluates their results, and decides what to do next.

Hermes demonstrates the difference between a chatbot and an agent: the model retains context, reasons about a goal, selects a capability published by PowerBuilder, receives the actual execution result, and can chain new decisions until the request is complete.

Introduction

Enterprise applications developed with PowerBuilder concentrate business processes, rules, and large volumes of information that are normally accessed through predefined screens and commands. Adding an artificial intelligence agent introduces a new interaction layer: the user describes the desired outcome in natural language, and the agent translates that intent into a controlled sequence of operations performed by the application.

This demo introduces Hermes, an agent connected to PowerBuilder 2025 R2 through Ollama and the minimax-m3:cloud model. Its purpose is not to replace existing application logic, but to use it: Hermes obtains report context, selects tools published by PowerBuilder, evaluates each response, and decides what to do next. A single request can therefore generate a DataWindow, apply filters or conditional formatting, calculate indicators, produce an executive summary, export the result, and prepare an email while preserving human confirmation before it is sent.

Read more

PowerBuilder 2025 R2 AES-GCM: Native Authenticated Encryption and Tamper Detection


PowerBuilder 2025 R2 AES-GCM: Native Authenticated Encryption and Tamper Detection

A technical demo of the new cryptographic capabilities in PowerBuilder 2025 R2 using CrypterObject, CoderObject, AES-256-GCM, hexadecimal payloads, and Auth Tag validation.

 

Introduction

PowerBuilder 2025 R2 introduces a major security improvement for business applications: native support for modern cryptographic operations through CrypterObject and CoderObject. This demo project focuses on one of the most relevant additions for enterprise systems: AES-GCM authenticated encryption.

AES-GCM is not just encryption. It is authenticated encryption, meaning the receiver can detect whether the encrypted payload was altered after it left the sender. For payment files, tax documents, ERP messages, API payloads, banking instructions, and any sensitive JSON exchange, this changes the security model: confidentiality and integrity are handled as one operation.

This article uses the demo project Demo_AES-GCM_pb, implemented in the window w_demo_security.srw. The user encrypts a fiscal JSON payload, transmits it as hexadecimal text, simulates reception, and then intentionally modifies one character to prove that tampering is rejected.
Read more

PyPb in Action: PowerBuilder and Python Building Executive Sales Charts


PyPb in Action: PowerBuilder and Python Building Executive Sales Charts

A technical demo of direct integration between PowerBuilder 2025 R2, PyPb, Python, Plotly, and Excel.

Introduction

This demo shows how a PowerBuilder window can execute Python code directly to build interactive visualizations, analyze sales data, and export reports to Excel without turning the application into a web solution or depending on an external API.

The integration is based on PyPb, the project published by Appeon at https://github.com/Appeon/PyPb. According to the official repository documentation, PyPb is a library that wraps Python.NET so PowerBuilder can interact with Python code: import modules, instantiate classes, invoke methods, read properties, and use popular libraries such as pandas, numpy, OpenCV, and openpyxl. In this demo, that concept is used to consume custom Python modules directly from PowerScript.

Demo objective: keep PowerBuilder as the business interface and use Python as the analytical engine to generate Plotly charts, detect outliers, calculate trends, display volatility bands, and produce formatted Excel files.
Read more

PowerBuilder 2025 R2: Runtime DataWindow Inspection with GetDWObject


PowerBuilder 2025 R2: Runtime DataWindow Inspection with GetDWObject

How to build a runtime metadata inspector by combining Describe, GetDWObject, DWObject, Modify, a shared DataStore, and UTF-8 JSON export.

 

Introduction

A DataWindow is not merely a row container. Its definition contains a tree of visual and functional objects: columns, text labels, computed fields, buttons, and other controls. Each element has an identity, type, band, geometry, visibility, and specialized properties. That information is usually implicit in the DataWindow Painter, but PowerBuilder can also inspect and modify it at runtime.

The Demo_GetDWObject project turns this capability into a visible tool. Users can enumerate the objects in a DataWindow, filter them by type, select one by name, retrieve its properties, locate it through temporary highlighting, export the result to JSON, and run basic design validation. The entire demo uses local data and requires no database connection.

The technical value of the demo is not a single method call. It presents a complete pipeline: Describe("DataWindow.Objects") discovers names, GetDWObject obtains a typed object, the NVO normalizes its properties, Modify applies a reversible visual change, and FileWriteEx produces a UTF-8 JSON artifact.
Read more

Find Articles by Tag

Branch & Merge DataWindow JSON Filter Authorization COM Installation Text .NET Assembly Database Profile Platform Export PBVM Encoding SQL Server SnapObjects BLOB Database Table DevOps PowerScript (PS) Graph MessageBox SOAP Source Control Database Transaction PowerServer Mobile HTTPClient Export JSON JSON External Functions PowerBuilder Compiler Debugging XML JSONGenerator Debug PDF DataWindow 32-bit Azure Database Painter Deployment SqlModelMapper RichTextEdit Control PowerBuilder (Appeon) REST PowerServer Web API iOS Window C# Syntax Data PBNI UI Validation Windows 10 Icons TreeView 64-bit TortoiseGit IDE SDK Event Handler Linux OS Messagging JSONParser Testing Android Git .NET DataStore Database Object RibbonBar Design License Repository UI Modernization Mobile Error Menu InfoMaker ODBC Visual Studio Icon Performance DragDrop Migration PowerBuilder Web API GhostScript Automated Testing Class OLE Trial DataType Application Import TFS OAuth Charts WinAPI Open Source SVN Bug ActiveX Authentication Expression SnapDevelop Event Script Encryption Windows OS CI/CD WebBrowser Sort SqlExecutor DLL Jenkins Elevate Conference UI Themes Outlook RibbonBar Builder Database Connection CoderObject Model Database Table Schema Service Oracle Event Handling Import JSON Resize OrcaScript .NET Std Framework NativePDF Variable Array Interface Database Table Data Configuration TLS/SSL PostgreSQL ODBC driver File PDFlib PBDOM PostgreSQL PFC Web Service Proxy OAuth 2.0 SQL Debugger Excel CrypterObject Stored Procedure RESTClient Source Code