Welcome!


Recently, I was asked by Mr. Peter Hastings (NH DoIT Commissioner) to take a look at cloud development concepts and see if there was any benefit for our development teams across the enterprise. After some investigation I could see that if all users/developers were on one server that co...
OData is quickly becoming the Lingua Franca for data exchange over the web. The OData standard defines a protocol and a language structure for issuing queries and updates to remote data sources, including (but not limited to) relational databases, file systems, content management syst...
I am here to tell you it’s true. You can write iPad applications in PowerBuilder. I’m sure that you are waiting for the other shoe to drop but ladies and gentlemen, there is no other shoe. It is simply the truth. You can write iPad applications in PowerBuilder. Those of you who have i...
Surprisingly few applications have used DataWindow gradients since they were introduced in PowerBuilder 10.5. Modern applications frequently have controls with gradients. They can give a fresh look to an old application. Where developers used solid colors to highlight columns, gradient...
Normally I try to write applications on the DataWindow or Appeon but every now and then I get a question that makes me sit back and say, “Huh?” In this case the question concerns the PostOpen event. I’ve seen that event named different things: ue_post_open, postOpen, post_open, ue_pos...
Load testing, perhaps more than any other form of testing, is one of those activities that you either choose to do well or risk a result that leaves you worse off than not doing it at all. Half-hearted attempts at load testing yield “results,” but too often those results are inaccurate...
Managing complexity is difficult in any growing business. As companies innovate, add new business lines, expand their global reach, cater to increased volume, or adopt new regulatory rules, processes proliferate and the discipline surrounding them goes out of the window. Moreover, the ...
A given object should assume as little as possible about the structure or properties of anything else (including its subcomponents). In simpler words: if you want to get data from an object, referenced by a variable, then use a public function declared in the referenced object itself,...
Create a separate function for each logical sub-task, i.e., divide one long program into a number of short subprograms. The idea is named “Separation of concerns.” Do that not only if the code will be re-used (i.e., called from more than one place) but even if it will only be called on...
As we know, Chief Information Officers are generally ‘change and upheaval averse’ because it is, after all, mostly prudent to resist change. With change comes risk, new user training, new integration challenges and a bottom line with increased cost. But new social enterprise trends can...
Every programmer knows about the IF command. It's pretty much a fundamental part of the syntax of every computer language that has ever existed. I don't need to explain how it works. The DataWindow can't use the IF command though. It does, however, support an IF function. In its sim...
Have you ever used a datastore that ran without a problem while you were developing your application, but once you've compiled it stopped running? Let me tell you that's a difficult bug to fix. I remember it so well. I kept going back and forth. How in the world could the DataWindow w...
Declare local variables in the beginning (on the top) of the function, before the first executable line. This will: Make it easier to detect all the variables used in the function and to follow them Keep as little stuff as possible in executable code fragments, where programmers sho...
I recently read Berndt Hamboeck’s article, ‘NetStart’ Your PowerBuilder Application after being kindly pointed to it by Bruce Armstrong. It made perfect sense to me to be able to distribute .pbd patches to client machines by having the client-application automatically install them from...
Efficiency may be the most commonly used term in enterprise software marketing – that or “ensure.” And not without reason – efficiency is one of the key value propositions of most enterprise software, from collaboration tools, to productivity tools, to integration tools and beyond. At ...
Give all entities mentioned in the code (DB tables, DB tables’ fields, variables, classes, functions, etc.) meaningful, descriptive names that make the code easily understood. The names should be so self-explanatory that it eliminates the need for comments in most cases. Use the words...
Big Data is everywhere. Predictive analytics and real time in-memory computing isn’t everywhere. This truth (if we can accept it to be so) represents something of an imbalance. As a subset of data mining, predictive analytics driven by in-memory computing efficiencies now has an opp...
Security is a must for most corporate applications. This article will give you a starting point to designing and implementing your own. We will do it with a table that is added to the example database and implement it in ancestor code. The idea is that you should only have to add rows ...
Normally I write columns about the DataWindow or Appeon. This month though I ran into an interesting little logic problem and when I solved it I realized it was really a nice piece of code so, even though it is not in my normal genre I thought I’d share it. I was tasked with allowing ...
Sybase I am convinced that PowerBuilder is poised for a mighty comeback. The fact is that still today PowerBuilder is by far the most productive development tool available. It eclipses all the rest. An experienced PowerBuilder programmer is demonstrably more productive and can finish t...
To pass errors from functions outward, throw exceptions instead of returning an error code like -1. That’s implemented by filling the “Throws:” field in the function’s header (signature) with the class Exception or its descendant. When the exceptions mechanism is used, calls to functio...
In my last article we explored what I call Advanced DataWindow Sorting. We covered everything that we need for the DataWindow. In this article we are going to polish what we did last month and make it look professional. The main area of concern is our sort selector window as seen in F...
In my previous article for PowerBuilder Developer’s Journal (Vol. 18 issue 8), I gave a sneak preview of some of the things we were working on for PB15 Classic. This is a closer look at one of them – Tabs and Docking in MDI Windows. Recall that in the article we mentioned adding two n...
While external controls exist for viewing image thumbnails, there can be the need to view images as thumbnails within the context of other data within a multi-row list, treeview or report. This can be easily done with a PowerBuilder DataWindow object. In this case a treeview DataWindow...
This two-part series examines and contrasts PowerBuilder .NET 12.5.1’s new dynamic assembly feature with corresponding dynamic library functionality in PowerBuilder Classic. The discourse is presented in the context of a simplified yet practical use case. Part 1 presented the use case,...
The articles in this two-part series examine and contrast PowerBuilder .NET 12.5.1’s new dynamic assembly feature with corresponding dynamic library functionality in PowerBuilder Classic. The discourse is presented in the context of a simplified yet practical use case. The first articl...
One of the innovative new features in the PowerBuilder 12.5.1 release is its ability to deploy PowerBuilder .NET code to run in 64-bit mode on 64-bit Windows platforms. In this article, after gaining background and perspective on 32- and 64-bit memory management and .NET deployment mod...
Paul Harvey, the great American radio personality, would always conclude his colorful broadcasts with the quip “And now you know the rest of the story.” For those of you not acquainted with Paul’s broadcasts, here’s a sample. If you get to about 3:40 in, you’ll hear the classic remark....
This article provides a means of automating the sorting of DataWindows... not just grid DataWindows as discussed in last month’s article, but all DataWindows, regardless of display format. Bear in mind that we are writing programmer tools. When writing for programmers we want to give ...
PowerBuilder 12.5 introduced a number of significant enhancements to web services support, both for creation and consumption. We’re going to look at what those new features provide and how to use them. We’re also going to look at how we can package some of that functionality so that ...
PowerBuilder has a very handy way to make data entry more convenient: the DropDownDataWindow and DropDownListBox edit styles for DataWindow columns. Indeed, it’s much simpler to pick up a value from a look-up list than to type it in each time you need to enter it. However, it looks lik...
By the time you are reading this, PB12.5 will have been released and work on PB15 well under way. A lot of exciting things have gone into the .NET version of PB but we still get requests for features to go into the Classic version of the product. Even though there was a lull in activit...
As we all know, the DataWindow is a very powerful and flexible control used for data presentation and manipulation. For the most part, the features that you get out of the box allow you to create some very impressive applications. With that said, there is always room for improvement. F...
This article will focus on Software Inventory Control Systems (SICS). Recently, I was asked by Bill Rogers (NH DoIT Commissioner) and Peter Hastings (NH DoIT Director) to take a look at SICS, investigate them and provide a recommendation. When I started this research I knew nothing abo...
Your application has a window containing custom visual user objects (CVUOs) that require system services in their constructor events. Obviously, the services must be resident and active before the CVUO constructor is invoked. Using globals (functions, or NVO references) is one approach...
Okay, so I've been promoting the inclusion of PB client/server articles, yet here I am writing about the Web DataWindow. Don't stop reading! This article applies to all PB developers, whether n-tier or client/server. That said, I now have to prove that this article is important to clie...
Part 2 of "RESTful Web Services: A Quick-Start How-To Guide" explores foundational issues in coding RESTful operations, including Basic Authentication and Exception handling. Along the way I’ll share with you multiple real-world coding tips and workarounds. As a teenager, one of my fa...
This is the third and final part of a series presenting a proposal for the use of the tag property of DataWindow columns. My original thought was to provide a means to automatically set a microhelp for each column. Of course, if you are using an MDI application you have a function to s...
Under heavy Confederate fire, wounded, surrounded, with one third of his men lost, Union General John Corse is holding the fort on the top of the hill in the US Civil War battle of Altoona. Peering into the distance, he sees a white signal flag waving. It is a message from General Sher...
Sofrepost, a subsidiary of La Poste (the French mail), develops and sells SPS, a management system for post offices. Our clients are national postal systems from a dozen countries on several continents. SPS is composed of five packaged applications developed with PowerBuilder that rep...