Oct
12

Creating & Using a PowerBuilder 12.5 WCF Service – Page 2

Learning To Create a WCF Web Service using PowerBuilder 12.5 .NET

Page 2

Back to Page 1 of the article

Continuing through the PowerBuilder wizard for creating the WCF Service… finally we reach the confirmation window where we click finish and let PB get the WCF Service started.

PowerBuilder 12.5 Training

PowerBuilder 12.5 Creating a WCF Service - Confirm

This is how your solution explorer will look after clicking the finish button.  If you have used a recent version of Powerbuilder you’ll recognize the familiar Workspace, Target and PBL’s.   PBL’s sure have changed since the days of PowerBuilder 3.0, they used to consist of one physical file that represented many objects.  Now PBL’s are nothing more than a container for files making things more like the other development languages.

There are two things notable about this screen shot as far as WCF Services go.  The References shown are assemblies that are required to make the WCF Service work, and were added automatically by PowerBuilder because they apply to the WCF Service project type.   The project object is very important because it contains many of the defining parts of the WCF Service.   The project object is where you choose which non visual objects, and functions within them are visible to .NET programs.  You may also change some of the choices made throughout the WCF Service creation wizard in the project object as well.

PowerBuilder 12.5 Training

PowerBuilder 12.5 Training - Solution Tree - WCF Service

This is the step where we (finally) start doing some real work.  I click on File–> New and choose Custom Non-Visual Class.  This class is where I will put functions for accessing the database.  Click the next button and you’ll be prompted for a name.

PowerBuilder 12.5 Training

PowerBuilder 12.5 Training - WCF Service Creating the NVO

Enter the name of your non visual user object here.  I called mine n_datafactory.

PowerBuilder 12.5 Training

PowerBuilder 12.5 Training

This step is one that I was normally confused with.  I didn’t understand the concept of Namespaces until I became comfortable developing .NET applications.  Namespaces are just another way of separating classes and objects, you might have a corporate namespace with classes having the same name as classes in the .NET class library but you refer to your corporate classes by using the corporate namespace.  If you have been around in programming for a while like me you could think of Namespaces as something vaguely resembling link libraries back in the MVS JCL mainframe days.  It allowed you to have the same objects in different libraries and the object that got referenced was the one you specified in the link list.  That was a bad example, but just think of namespaces as a way of organizing and accessing classes.

PowerBuilder 12.5 Training

PowerBuilder 12.5 Training - Non Visual for WCF Service

Upon clicking finish you will be prompted with a familiar confirmation window.

WCF Service - Creating the NVO

WCF Service - Creating the NVO

At this point I put together some quick-and-dirty PowerBuilder code to handle the logic I wanted for my WCF Service.

The basic functions I wanted for my WCF Service proof-of-concept project.

  • Pass a category_id and return Category information from the database
  • Pass a category_name (or partial) and return Category information from the database.
Here are the PowerBuilder 12.5 coding steps (in my mind) that I was going to need:
  1. Connect to database
  2. New Function with code to query the database for Categories by category_id.
  3. New Function with code to query the database for Categories by category_name.
  4. Create a new text file.
  5. Open/Close Text File
  6. Write Log Messages to Text File (messagebox would not be good for a console application)
  7. Instantiate the NVO
The code didn’t take more than an hour to write, it is quick and dirty, just good enough for proof of concept.
Here is a look at my Solution Explorer after writing the code.
PB WCF Service - Solution Explorer

PB WCF Service - Solution Explorer

d_get_categories:  This is a new data object that gets a list of all categories.  I did not use this data object in my proof of concept yet, but I plan to use it later.

d_get_category:  New data object that will select one category by category_id

d_get_category_byname:  New data object that will select one or more categories by category name using the “like” operator.  In this example I take only the first row if multiple rows are retrieved.

Category:  New Structure for the category data.  I found myself mixing my PowerBuilder naming standards with naming standards commonly seen in .NET applications.  I named the structure without the typical s_ or str_ prefix commonly used in PB because it was going to be available in the .NET application and it might be confusing to a .NET developer named str_category.  These are things that we never had to think about…

n_datafactory:  New non-visual class that contains the functions to be available in the .NET application via the WCF Service.  Most of the coding will be in here.

n_ds:  New base class (standard non visual) of type datastore just because I like to inherit from my base objects rather than use dataobject directly especially with datastores.

I’ll provide code at the end should anyone want to recreate this project.

Sampling of the PB.NET code inside my n_datafactory non-visual user object.

 

Nothing too fancy about this code.  Notice the break point that I have set, you can still debug a WCF Service just like any other PB application.    You need to be cognizant about  how the various data types map between PB and .NET.

PowerBuilder 12.5 .NET WCF Service

PowerBuilder 12.5 .NET WCF Service - NVO Code

 

PowerBuilder 12.5 .NET WCF Service – Console Hosting Options

There are many important settings on the General tab of the project object.  Here are the settings I used.  You may have noticed I used a different assembly name for the service than I chose in the wizard.  The application file name is the exe that starts the console, and is what hosts your WCF Service.
PB.NET WCF Service

PB.NET WCF Service - Project Painter

The Objects tab of the PowerBuilder project painter is another very important part of your WCF Service.  Here you see my non-visual user object and a list of function prototypes in it.  I checked the functions that I wanted to make available to the .NET application, the others are internal to the service.
At this point you can click the Run Web Service button, and if everything is coded properly your console application will start making your WCF Service available.
Project Painter PB 12.5.NET WCF Service

Project Painter PB 12.5.NET WCF Service

The console window opens upon clicking Run Web Service.
You then can click the View WSDL button to see if the WCF Service is working properly.
PowerBuilder WCF Service - Console Window

PowerBuilder WCF Service - Console Window

Here is the WSDL file that was served by the WCF Service we created using PowerBuilder .NET.   It shows information about the service contracts that you can use to generate a proxy in your WCF Service client application.
WCF Service WSDL Page - PowerBuilder 12.5 Training

WCF Service WSDL Page - PowerBuilder 12.5

The next step I took was to generate a proxy and some C# code or the WCF service using a program called SVCUTIL.EXE which is provided with Microsoft Visual Studio and the .NET framework.  You need to locate the correct version on your computer and navigate to that location in a command prompt.
At the command prompt I typed:
svcutil.exe http://matrix:8001/n_datafactory?wsdl
Note: The name of my PC is matrix  (original huh?)
The SVCUTIL.EXE program created two files that I will copy into my Visual Studio ASP.NET MVC 3 Application when I go to use the PowerBuilder WCF Service.
Using SVCUTIL to generate a WCF Service Proxy

Using SVCUTIL to generate a WCF Service Proxy

Two files were created in the folder where SVCUTIL is located.  You should copy both of them into your .NET application.
Now we are done on the PowerBuilder side, and we can consume the WCF Service in a .NET application or website.   Here is an ASP.NET MVC3 Telerik website that I created from the Visual Studio 2010 project wizard.
You can see I’ve added the two files to my Visual Studio 2010 project.  There is one important thing that needs to be done before you can access the WCF service.  You need to take the endpoint information from the output.config file you copied into your project and put it into the Web.config.   If you forget to do this you’ll get errors related to the endpoint being invalid or missing for the service.   This was probably the most challenging technical hurdle and it wasn’t really that tough.
One more thing you should do in your .NET application project is to create a Web Reference.   To create it you right click on the project in the Solution Explorer, and choose Add–>  Service Reference –> Then click the Advanced Button… –>  Then click the Add Web Reference… button –> then type the address of your Web Service (as you did in the SVCUTIL.EXE step) into the URL box.    Upon entering the URL  (http://matrix:8001/n_datafactory?wsdl) click the green arrow and Visual Studio will discover your Web Services and display them.  At this point you simply click the “Add Reference” button and your Web Reference will be added.
ASP.NET MVC - Consuming PowerBuilder 12.5 WCF Service

ASP.NET MVC - Consuming PowerBuilder 12.5 WCF Service

So the final question is… how do you use the PowerBuilder 12.5 .NET Web Service?  It was very simple, I’ll post the code used in my Controller & View
This is from the HomeController.cs file, notice the “using” that references the namespace from my PB.NET WCF Service.  I had to add the new PowerBuilder 12.5 .NET assembly into the ASP.NET project references BEFORE before being able to put it into the “using”:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using DisplacedGuy.LinkDir;namespace TelerikMvcApplication1.Controllers
{
public class HomeController : Controller
{
public n_datafactoryClient client = new n_datafactoryClient();
public ActionResult Index()
{
short CatId;
DateTime BeforeDate;
DateTime AfterDate;

TimeSpan ldtDiff;
category newCat = new category();

CatId = 117;

BeforeDate = DateTime.Now;

newCat = client.GetCategory(CatId);

AfterDate = DateTime.Now;

ldtDiff = AfterDate.Subtract(BeforeDate);

ViewBag.Message = “Called PB12.5 WCF Web Service using CatId: 117, received: ” + newCat.catname +
” and took ” + ldtDiff.Milliseconds.ToString() + ” milliseconds to complete.”;

return View();
}

public ActionResult About()
{
DateTime BeforeDate;
DateTime AfterDate;

string CatName;

TimeSpan ldtDiff;

category newCat = new category();

CatName = “S”;

// Use the ‘client’ variable to call operations on the service.
BeforeDate = DateTime.Now;

newCat = client.GetCategoryByName(CatName);

AfterDate = DateTime.Now;

ldtDiff = AfterDate.Subtract(BeforeDate);

ViewBag.Message = “Called PB12.5 WCF Web Service using CatName: S, received: ” + newCat.catname +
” and took ” + ldtDiff.Milliseconds.ToString() + ” milliseconds to complete.”;

// Always close the client.
client.Close();

return View();

}
}
}

I passed the display string to the MVC View using the ViewBag.Message, so the code for the View consists of only one extra line of code, like this:
   <%: ViewBag.Message %>
Well, this is it.  I hope that it was helpful and that you had as much fun creating a WCF Service in PowerBuilder 12.5 as I did.   It isn’t overly difficult but there are a LOT of steps and it was kind of a pain documenting them all– so now I see why there aren’t many examples of how to do this posted on the web!    Stop back later I plan on taking this a lot farther.  Next I will work on returning multi-row result sets, updating data back to the database and doing lots more cool stuff.
Sincerely,
Rich (aka DisplacedGuy)
P.S.  I am off contract and looking for a .NET contract or job in North Orlando (e.g. Lake Mary area).  My only requirement is that the job is challenging, flexible, and close to my family.
 p.s. Before you go…  would you please, please, please click the Google +1 icon at the top of the page if you like the article?   It is an important measurement tool that Google uses to determine what is real content and what is spam.   This article took a lot of time to create.  I am easy to please just a simple pat on the back with a Google +1 keeps me going. :-)

Oct
12

Creating & Using a PowerBuilder 12.5 WCF Service

Learning To Create a WCF Web Service using PowerBuilder 12.5 .NET

This is a completion of a prior article where I talked about my first experience using PB12.NET to create a WCF Web Service.  The WCF Service accesses a Microsoft SQL Server 2008 database and is used to provide data to a web application that I wrote in ASP.NET MVC3.    If you want to get a background on my process and take a look at the web service in action then go back to my Creating a WCF Service using PowerBuilder 12.5 first.

Goals for the new WCF Service

  1. Learn how to create a WCF Service in PB 12.5
  2. Connect to and provide data from a SQL Server 2008 database.
  3. Use the Web Service in a simple ASP.NET MVC3 Web Application

Of course part of my motivation was learning… I did had an idea in mind what I wanted my web service to do.  I have been creating Web Applications in Visual Studio 2010, and there were times that I wished I had the datastore and easy database manipulation I was used to with PB.  I wasn’t sure if I’d be able to use the datastore and different data objects in a WCF web service without needing to deploy lots of PB run-times or other things like EA Server.

To my surprise, creating the Web Service was very easy.  The code inside my non-visual user object was simple as I have been working with datastore’s for years and using them comes second nature to me.  The only real difference between creating a basic non-visual in a PB application, or using one for a Web Service, are that you have to make a lot of settings on the project object that you were not used to seeing and you need to know the basics about WCF Services.    You need to think about which functions you want to be “exposed” inside the .NET application.  Then you need to understand which data types you can use without problem and how the various data types map between PB and .NET.

Step by Step Creation of the PowerBuilder WCF Service

I promised a step-by-step and was reluctant to post so many screen prints, but my goal was a “complete” reference for how to create a working Web Service.  With that said we’ll start by opening PowerBuilder 12.5 .NET

Start by File–> New   and choose Solution and click Finish.  You will have a chance to name your Solution in the next step.

PowerBuilder Workspace Creation

1. PowerBuilder Workspace Creation

The second step is naming your PowerBuilder Solution.

PowerBuilder 12.5 Solution Creation

2. PowerBuilder 12.5 Solution Name

After clicking save, click on Start –> New again.  Choose WCF Service from the Target tree view item.

PowerBuilder 12.5 WCF Service Target Creation

PowerBuilder 12.5 WCF Service Target Creation

 

Next you choose whether you want to create a new WCF Service target or create one from an existing Classic .NET Web Service Target.  I chose to create a brand new WCF Service.  Then choose next…

PowerBuilder 12.5 WCF Service Target Type

PowerBuilder 12.5 WCF Service Target Type

 

There are a lot of dialog windows in the process of creating a new WCF Service, this one is where you name the project and the PBL’s associated with it.  You also name the target file itself, I left the defaults which were populated using my Project Name selections.

PowerBuilder 12.5 Name WCF Service Target

PowerBuilder 12.5 Name WCF Service Target

 

Choosing the Library search path was another “default”.  Since I was creating a new WCF Service and didn’t have any existing PBL’s to utilize in the process I left the default which was the PBL name of my project.   Again I clicked Next…

PowerBuilder 12.5 Choose WCF Service Target Libraries

PowerBuilder 12.5 Choose WCF Service Target Libraries

 

There are a lot of questions along the way where you could just take the default. Here is where you choose what name you want to use for the actual assembly file name.   If you wanted to consume it in a .NET application you’d go and find this assembly and add it as a reference to your .NET project.  I chose a cool name here and ended up changing it later, choose anything you like here.  As much as I wanted to hit Finish by now I clicked Next again…

PowerBuilder 12.5 Choose WCF Service Assembly Name

PowerBuilder 12.5 Choose WCF Service Assembly Name

 

This one wasn’t as clear to me, but I left the default of (None) and clicked next.

PowerBuilder 12.5 Choose New Object

PowerBuilder 12.5 Choose New Initial Object

Next I took the defaults on several dialog windows of the wizard for creating WCF Service in PowerBuilder.

PowerBuilder 12.5 WCF Service Wizard

PowerBuilder 12.5 WCF Service Wizard

I didn’t add any Win32 dynamic library files…

PowerBuilder 12.5 WCF Service Wizard

PowerBuilder 12.5 WCF Service Wizard

This option I chose to create a console (Self Hosted) application rather than an IIS Service.  I based this decision on reading the dialog and believing that setting up the IIS hosted service would be more difficult.  The goal of this excise was to get one working.

Next time we’ll use the IIS option.

 

PowerBuilder 12.5 WCF Service Hosting Option

PowerBuilder 12.5 WCF Service Hosting Option

Here I set the base address to my machine name and left the port to 8001, the port that PB had chosen for me.

PowerBuilder 12.5 WCF Service Hosting Option

PowerBuilder 12.5 WCF Service Console Info

 

Please continue with the Step by Step creation of a PowerBuilder WCF Service Page 2 

 

 p.s. Before you go…  would you please, please, please click the Google +1 icon at the top of the page if you like the article?   It is an important measurement tool that Google uses to determine what is real content and what is spam.   This article took a lot of time to create.  I am easy to please just a simple pat on the back with a Google +1 keeps me going. :-)

 

Mar
25

The PowerBuilder Phenomenon

The PowerBuilder Phenomenon – One Perspective

Introduction

Conceptual Model of PowerBuilder Apps

This is a historical perspective of the application development platform and IDE named PowerBuilder by Sybase Corporation.  The summary was written by Rich Bianco and is accurate to the best of his knowledge.  This summary contains facts and opinions about the history of PowerBuilder, the opinions are Rich’s and do not reflect those of any client he represents.  Rich is an expert level PB developer having extensive experience with Version 3 through Version 11.2 against all major DBMS  (Oracle, MS SQL Server, Sybase SQL Server, Informix).

The Birth and Death of PowerBuilder (1985-87)

The initial prototype of PowerBuilder was presented to management at a company called Cullinet in 1985, however they were facing big problems fending off Computer Associates from a hostile takeover, and were not able to capitalize on the outstanding product.  They lost the battle against CA shortly after in 1986 via a hostile takeover.  The prototype was deemed non-essential to the corporate raiders at CA and shelved along with firing of it’s developers.  It would appear that PowerBuilder was dead before it had a chance.  It is ironic that CA practically gave away the most valuable part of the company they engulfed.

Rebirth – Luck, or Karma?  (1988)

In 1988, PowerSoft had been developing apps for the VAX platform and saw that PC products were about to explode, so they asked the vultures over at CA if they wanted to sell the original code.  CA had looked at the code and determined it “had no future”, so they sold it to PowerSoft for a few dollars and good luck wish.  PowerSoft then assembled the original team and started enhancing the program.  Three years after initial concept the project was brought back to life, either by Luck, or Karma.

“PowerBuilder” was for real (1989)

PB App and Google Maps Services

About a year after getting the code from CA, the team had themselves a product, and christened it with the name “PowerBuilder”.  They were developing VAX applications for customers and started to rewrite some internal applications using the new tool.  It was a brilliant way to test, improve and refine the tool.   However they lacked the funding to undertake the complex projects.  HP was invited for a demo of the product, and apparently was so impressed that they pretty much wrote a blank check to PowerSoft.  HP began developing their in-house PC apps using PowerBuilder, while PowerSoft was rewriting complex VAX applications for the PC and collecting real-world test results and refining the tool along the way.  PowerBuilder had a feature that is not available in any other language to this day, not without purchasing add-ons or sacrificing control or offering database independence.

First global customers (1989-90)

The first few worldwide customers were enough validation that PowerBuilder filled a huge void in a huge untapped market.  Most notable is the second customer.  I don’t believe many people know PB was adopted by Microsoft so early on.  I suppose MS would not prefer to advertise the fact that they weren’t developing with their own tools.

  1. Royal Australian Air Force First global customer
  2. Microsoft Corporation – Second global customer.  Management in Redmond, WA not only purchased licenses and developed in-house applications, but it has been said that employees using PowerBuilder raved about it to friends further fueling the PB fever that was under way.
  3. Canadian Government – PB became the tool of choice for development after a recommendation made to the Canadian Government.  Revenue Canada built GST (Govt. Sales Tax) system that is tracking tax returns to this day.  Most Canadian departments use PB for mission-critical systems ranging from those that scan your license plate when you drive into Canada, scanning of your passport, to critical interfacing with Canadian runway and radar system (a 24×7 operation).  The list of applications is quite large many still in use today.  Other applications are the Old Age Pension (developed in 2002),  Case Logging for the Supreme Court & Tax Court of Canada, Firearms Registration System, UN Troop Deployment, Security Clearance System, and Federal Election support systems.  An independent study compared performance of one of their systems written in PB v.s. Visual Basic and the PB one performed 4000% faster.  Maybe Canadians are smarter than us Americans’ and not so eager to use a tool (e.g. Java, .Net)  just because it is the new buzzword, or the latest fad.

Money, Money, Money (1990-96)

PowerBuilder was gaining traction fast, companies couldn’t buy it fast enough, and developers with experience were commanding six figure salaries.  Revenue numbers were amazing growing consistently year after year.  Around 1994 the inevitable happened, PowerSoft merged, or was

Sample uses Flicka Services

acquired by Sybase to the tune of around a billion dollars in a stock deal.  But Sybase was unable to retain the core developers of the product, and it appeared that they could not market the product properly.  Sybase stock took a beating and I’m sure they wished the marriage could have been annulled.  Market share was still very strong however but it seems like 1996 was a distinct turning point when Web mania began taking away some of PB’s thunder.  Sybase wasted several years by making a commitment to Java which gave the founders that left time to make a competing tool called SilverStream (acquired by Novell in ’92)

The new scapegoat for poorly performing applications  (1997-2009)

Through all of the years (over a decade) of using PowerBuilder at numerous companies against every major DBMS there was never a performance problem that could be attributed to PowerBuilder.  I have a very strong theory about why people were starting to complain about how PB applications were too slow, too network intensive, or too hard on the database.  Every single time I worked on one of these so called “slow” applications it was evident that the developer was not trained properly at using PowerBuilder.  The combination of simplicity & power facilitated development of serious applications by persons with little programming experience.   As the name “PowerBuilder” implies, it is extremely powerful tool, and in the hands of a junior level developer with little or no understanding of Object Oriented Programming or weak DBMS Skills a fair number of bad PowerBuilder applications started to make a bad name for the tool.  It is my opinion, that PowerBuilder is still (in 2010) the best 4GL around.  I’ll challenge anyone with their tool of choice and I’ll use PowerBuilder, and have the results independently checked for quality, performance, scalability, maintainability, and whatever other criteria they can dream up.  I wish Sybase would sponsor something like this and prove once again how strong the tool is, but it seems as if they don’t even believe in themselves.  Anyway my theory… almost every company I worked there were PB apps written by novice developers.  PB was far too powerful a tool in the hands of a novice, it is like a civilian shooting a bazooka at the range.  It got the job done but was causing damage either by retrieving the entire database into a datawindow causing database degradation, network congestion, it seemed most of the complaining originated from DBA’s and Network Engineers.   It isn’t practical, but you should be required to earn a license to use PowerBuilder.  It is too easy and forgiving to write bad code giving the tool a bad name.

Sybase Marketing - 1 step forward, 2 steps back? (2009 – 2010)

I can’t speak for most developers, but it will be a cold day in hell when I shell out thousands of dollars for development software to learn with.  Shall I even waste the time installing PB11.5 for 30 days elapsed time, meaning I might open it about 3 or 4 times?   Sybase as usual is doing the exact opposite of everyone else.  We are in the age of Open Source, which is being embraced at the corporate level now, and Sybase decides to do hardware to license marriages.  This means when you install the software you have to log into Sybase, and assign a physical PC with a license. If your hard drive crashes (our corporate laptops averaged every two or three years)  you have to find the original instructions and detach the license and attach it to the new PC.   So much for installing PB on your home PC as the license allows when the company you are working for manages the licenses.

In the past, developers were like a shadow sales team for Sybase, we would check out all the new bells and whistles on new versions and make a case to management about why we need it.  With the new assume everyone is a thief first policy Sybase has effectively taken away the ability for developer to verify new features and feel comfortable recommending an upgrade.  No developer that has been around the block will recommend a product based on marketing hype, we need to see it work.

All software companies have to deal with the cost of piracy, there will always be someone who will crack software it is just one cost of doing business.  This cost is fairly predictable and is probably easy to detect via virtually every PC being connected to the internet.  But I really wonder if Sybase has considered the cost of alienating loyal customers.  How many customers will give it up and move to another tool when they are inconvenienced or are made to feel like a thief.   I think of Wal-Mart which I have boycotted because I feel like a thief with all their cameras, and locked up merchandise, it used to be the smaller expensive items, but now they are locking basic items that you’d have to wear a trench coat to sneak out of the store with.  Forget it, I feel like a valued customer at Target and the prices are competitive.

Who will step in next?  I’m betting that  WaveMaker will be the next “PowerBuilder” for Ajax and Web Applications?  (2010 and beyond…)

With PowerBuilders’ popularity on an apparent decline it is only a matter of time before Sybase decides to pull the cord on it.   Even though the tool offers productivity unmatched by other leading tools it may lose critical mass needed to stay in the market.   Everyone is watching and waiting to see what happens and WaveMaker couldn’t have come a minute too soon.  WaveMaker is the first tool that I’ve been exited about using since PowerBuilder.  I’m committed to riding the next wave (pun) and learning WaveMaker.   Watch my blog in the coming weeks for new WaveMaker articles, tutorials and comparisons between PowerBuilder and WaveMaker.  Here is one article on WaveMaker.

Your thoughts?

Are you a PB developer or ex-PB Developer?  I’d love to hear what you think, what you are doing now.  Please let me know via the comments or email.  If you decide to try WaveMaker look for me on the WaveMaker development forum under username RichBianco.

Misc – About PowerBuilder

Product Manuals
  • Installation Guide InfoMaker 11.5
    This book is for anyone installing InfoMaker 11.5. It addresses installation, product licensing with SySAM, migration information and other topics. For complete topic information, see “Contents”.
  • InfoMaker 11.5 Getting Started
    This book introduces InfoMaker and provides a tutorial for learning to use InfoMaker. The lessons teach basics and how to create forms, reports, queries, and graphs.
  • InfoMaker 11.5 Connecting to Your Database
    This book is for anyone using InfoMaker to connect to a database. It assumes you are familiar with the database you are using and have installed the server and client software required to access the data.
  • PowerBuilder 11.5 Extension Reference
    This book is for programmers who build applications that use built-in PowerBuilder extensions.
  • PowerBuilder 11.5 Connection Reference
    This book describes the database parameters and preferences used to connect to a database in PowerBuilder.
  • PowerBuilder 11.5 PowerScript Reference
    This reference manual describes syntax and usage information for the PowerScript language including variables, expressions, statements, events, and functions .
  • PowerBuilder 11.5 Users Guide
    This book describes the PowerBuilder development environment and the use of PowerBuilder user interface tools in building objects including windows, menus, DataWindow objects, and user-defined objects, creating client/server and multitier applications .
  • PowerBuilder 11.5 Getting Started
    This book provides an overview of the PowerBuilder 11.5 development environment, a tutorial in which you build your first application, create a PowerDynamo Web target, deploy and run a Web site, and more. Please see “About this Book” for more details.
  • Installation Guide PowerBuilder Enterprise
    This book explains how to install the PowerBuilder Enterprise 11.5 product.
  • Installation Guide PowerBuilder Desktop/Professional 11.5
    This book describes the installation of the Desktop or Professional edition of PowerBuilder 11.5.

Newsgroups

Jul
19

WaveMaker delivers for the cloud like PowerBuilder did for client-server

WaveMaker delivers for the cloud like PowerBuilder did for client-server

About WaveMaker

Rapid Application Development for Business-Critical Web 2.0 Applications

WaveMaker is an easy-to-use WYSIWYG development tool for the cloud platform.  It has a visual drag-and-drop interface that makes Web 2.0 and cloud application development easy and fun, like what PowerBuilder did for client-server.  If I had to describe WaveMaker in one sentence, I’d say it is an open, development IDE, that will help you build impressive looking RIA (Rich Internet Applications) without needing to know how to use CSSHTML or Java.  The finished product is a real Java application deployed as a .war or .ear file.

The interface has similarities to PowerBuilder in the sense that much of the development is drag-and-drop and WYSIWYG.   Like PowerBuilder you can create database update applications with no code, or very little code.   WaveMaker even has a feature mildly resembling the datawindow in PowerBuilder called enterprise data widgets.  You can import your data-model into WaveMaker and the data widgets are created for each of the tables in your database while taking into consideration the relationships between tables.  When you drag-and-drop the data widgets onto your application window, WaveMaker automatically creates “datawindow like” update forms.  In the application I created, a grid style list on the top and free-form detail view on the bottom.  To do that in PowerBuilder you’d actually need to create two datawindows, and write code to share them, sync them and call update functions.

Though similarities exist, PowerBuilder is a fat client, Win32 style tool and WaveMaker is a pretty Web 2.0 IDE that runs in your browser.   I love that WaveMaker works in Google Chrome and I have yet to encounter any problems with it which is great, I can’t stand tools that require I use the painfully slow Internet Explorer.

What sets WaveMaker apart from the competition?

WaveMaker is the hottest development platform for RIA available with over 15,000 developers worldwide.  The last time we’ve seen a development tool with such a head start over the competition was with PowerBuilder and client-server development in the 1990′s.  PowerBuilder developers cashed in for nearly a decade while PB maintained technical superiority and another decade due to the sheer number of apps developed in PowerBuilder needing to be maintained or rewritten.   Any developer looking to ride the next wave,  owe it to themselves to take a hard look at WaveMaker.

WaveMaker Studio generates standard Java apps – extensible by experienced Java developers using any Java IDE

You can develop a robust, fully functional database web application with create, read, update and delete functionality without writing any Java code.   This isn’t marketing hype, I’ve

WaveMaker is the next PowerBuilder for enterprise web applications

My first WaveMaker database web application. Created in less than an hour via a WaveMaker tutorial and has insert, update and delete functionality. Zero lines of Java code were written... by me.

downloaded WaveMaker and created my very first RIA in a matter of hours following the tutorial on the WaveMaker website.  The beauty of WaveMaker is that it generates a standard Java application (WAR or EAR file) that can be deployed to just about any old application server.

Entirely open source, including the WaveMaker application itself

WaveMaker is based on Dojo 1.0 framework and automatically generates Java, Spring,  ACEGI (Spring Security),  Hibernate, messaging, user security (LDAP or DBMS) and multitenancy code for you.  People like myself who want to learn all the latest technologies can use the generated code as a crutch in coming up to speed using Java and experienced Java developers can extend the WaveMaker applications as needed.  Last but not least, WaveMaker improves developer productivity after coding is completed by providing one-click deployment to various cloud-based servers!

WaveMaker applications have the benefits WPF without being forced to deploy on Microsoft servers

WaveMaker’s use of panels in the graphical designer is a strong feature that makes it easy to create attractive looking web 2.0 style apps that automatically scale, adjust and resize based on screen resolution or platform.  WaveMaker provides the same benefits as Microsoft’s new WPF technology without being forced to deploy on expensive Microsoft servers or software.  All other non WPF 4GL programming languages require that you manually code for resizing which can not only be time consuming but technically challenging if there are a lot of controls on the page.  So with WaveMaker you get the benefits of WPF but in an Open Source solution.

My first impressions after trying WaveMaker

Coming from a PowerBuilder background I expected a lot and WaveMaker delivered

I’ve spent most of my career doing PowerBuilder development against every major DBMS and I still believe it offers productivity beyond anything on the market for client-server applications.  But the writing is on the wall for client-server and rich internet applications and WaveMaker are the future.   I’ve been spoiled with visual inheritance and the datawindow in PowerBuilder.

WaveMaker is the fastest, easiest way to develop RIA and soften the steep Java learning curve

WaveMaker is the first development tool to catch my attention and keep it.  WaveMakers’ claim of building a functional enterprise web application without needing to write Java code is for real.  In a single day, I’ve taken an existing PHP / MySQL web 1.0 application and re-created a good portion of the core functionality using WaveMaker.  I had initially planned on showing off my work in this article but I’m so impressed by the end result that I’m seriously considering finishing it up and making it a SaaS  (Software as a Service) offering.   The fact that a non-Java developer can take WaveMaker with minimal experience and training and develop a competitive SaaS should speak volumes about how powerful and easy to use WaveMaker really is.

WaveMaker is fun to use and I can use the generated code to better understand Java

From the day I downloaded WaveMaker and gave it a test run I knew that it was the next step for me as a former PowerBuilder developer.  I recently had the opportunity to attend one of WaveMakers three-day, extensive nine-hour training courses which is offered for under $200 and worth every penny. Not and not only am I still having a blast but I feel as confident as ever to tackle the challenge of developing enterprise web applications, or robust SaaS solutions.

You can try WaveMaker yourself by going to www.wavemaker.com/download!

Sincerely,

Rich (aka DisplacedGuy)

Sep
01

PowerBuilder – Any real competition? Exploring WCF RIA & Silverlight 4

Do any development technologies stack up to PowerBuilder?

The question was almost rhetorical… but look at what I’ve done here.

Converting PowerBuilder to C Sharp .NET, WCF RIA Services and Silverlight 4

I know it is hard for some people to watch the big guys win all the time, but Microsoft has been up to some good things lately. I’ve used Visual Basic in some prior corporate projects and also done some light web development using ASP.NET several years ago.  Neither impressed me at all, they weren’t in the same ballpark as PowerBuilder as far as corporate development goes anyway.

My background, to put things into perspective here…  I am a PowerBuilder expert, a career PB developer with almost 20 years experience starting with version 3.0.   I’ve been trying to find the next best thing to PowerBuilder.

I previously wrote about was WaveMaker which is a good option especially if you like Java or your company is a Java shop.  I regret to say this, but if you are a PB developer without Java experience you are going to find yourself more comfortable learning Microsoft.

The .NET Framework 4 has evolved to become a viable competitor in the market.

Overview of Windows Communication Foundation in .NET Framework 4

PowerBuilder to WCF Conversions

WCF handles interoperability and security

WCF was created to support the move towards service-oriented software development.   In a nutshell WCF handles challenges of interoperability and security between systems of different platforms, such as Java EE and .NET that may require different security or transaction handling across local networks or the internet.

This graphic helps illustrate all of the technologies that would have been required in the prior version of .NET and were reasons that I lost interest in learning some of the prior versions of .NET.

The Microsoft site has a very detailed introduction to WCF in .Net Framework 4, and is where I borrowed above graphic from.

Overview of WCF RIA Services

WCF RIA Services is brand new this year and provides the ability to write application logic that runs on the middle tier and controls access to pre-defined queries or business logic.  WCF RIA is specific to Silverlight 4 and simplifies the authentication and data validation on the Silverlight platform.

Visual Studio 2010 generates the RIA Services from your Entity Model and allows you to customize the generated services or add extra business logic.  Unlike some tools that generate objects from your schema, Visual Studio is one of the best at handling data model changes after the fact.  This is a huge plus because let’s face it, there is almost always something overlooked before development starts.

Overview of Silverlight 4

Silverlight 4 is the platform for creating visually appealing and media rich user interfaces.  As a PowerBuilder developer you are going to have fun with Silverlight 4.  Visual Studio 2010 is an amazing IDE and Silverlight has come a long way in version 4.  The old days of VB where you had to bind a grid directly to a database are gone thank goodness.  Don’t expect datawindow functionality but you can count on an impressive arsenal of controls that almost make up for the lack of datawindow.  Another big plus and advantage over PowerBuilder is the quality and quantity of help files, sample programs and instructional videos.  The intelli-sense alone in VS2010 is enough get any object oriented PB developer up to speed very quickly.

Converting PowerBuilder Applications

So how does this technology stack up to PowerBuilder as a whole?  Not bad!  An experienced PB developer should be able to pick up these technologies and become somewhat productive in a couple weeks maybe a little longer if you are not familiar with WPF or XAML.

The Datawindow – How to manage without it

The DataGrid and Grid in Silverlight 4 allow you to bind to various data sources, has tons of flexibility and adequate events for meeting most business requirements.  Silverlight with RIA Services can even handle detecting changes made to the data and updating the database as long as your data model was well defined and all the associations made in your Entity Data Model.  I’ve found that in real-world applications much of the automatic “Marketing Magic” stuff never applies and in my application I ended up doing retrieval and update manually.

PowerBuilder Datwindow Buffers and Detecting Changes In Data

The .NET Framework has a class called ObservableCollections which inherits from Lists which inherits from Arrays (don’t quote me on this…) but the concept can be used in a remotely similar way as datawindow buffers in that they “observe changes” in the underlying rows or columns and you can perform actions based on the changes.

PowerBuilder Dataobjects – Free Form & Grid Style

Silverlight uses a basic Grid for “Free Form” style dataobjects consisting of many separate controls.

Silverlight has a DataGrid object which would be used for “Grid” style dataobjects.  It is nothing more than an XAML wrapper with one to many DataTemplate objects for each column each of them having a special “Header”  property defining the header.  Listed below is a possible mapping of these control types to PowerBuilder dataobject column edit styles.

Possible PowerBuilder to Silverlight 4 Mappings

PowerBuilder Silverlight 4 Data Template
SingleLineEdit TextBox
EditMask (Date) sdk:DatePicker
EditMask (String Format) TextBlock
Label sdk:Label
DropDownDataWindow ComboBox
DropDownListBox ComboBox
Picture Image
CheckBox CheckBox
RadioButton RadioButton
Tab/TabControl TabControl
Oval Ellipse
Rectangle Rectangle
SingleLineEdit (with code) AutoCompleteBox
RichTextEdit RichTextBox
Datawindow (Free Form) Grid (with many controls)
Datawindow (Grid, Tabular) DataGrid (with many controls)

Other Comments about the transition from PowerBuilder to .NET, WCF RIA & Silverlight 4

Overall the process of converting a PowerBuilder application went very well.  Every technical challenge was easily overcome by reading the vast amount of documentation, or finding the same thing on a developer blog.   I believe most PB developers will enjoy Silverlight 4, and eventually like it even more than PowerBuilder.  I didn’t go into the advanced possibilities with Silverlight 4, but you can do some pretty amazing things and customize just about any control, one example is a TreeView, with Templates you can define how the tree expands and display multiple columns in multiple formats for each treeviewitem.

I believe this combination is a viable PB alternative and one that most PB developers would enjoy.  If you have to choose one area to start learning in, Silverlight 4 is the most fun and the Silverlight website has tons of good information about learning and sample websites that will get you excited to start learning.  My program below doesn’t look too shabby for a weeks worth of development most of which was learning.

Here is a snapshot of my converted application, it is the Admin component to a publicly accessible link directory.  The database is Microsoft SQL Server 2008. The actual public part of the link directory this data represents is at My Orlando Information Link Directory

This program below was redeveloped in Visual Studio 2010 C#.NET with WCF RIA Services as mid-tier accessing a Microsoft  SQL Server 2008 and Silverlight 4 for the User Interface.   The Free form data grid still has a small amount of work tying the drop down value.

PowerBuilder to WCF RIA and Silverlight 4

PowerBuilder to WCF RIA and Silverlight 4

Sincerely

Rich (aka DisplacedGuy)


Oct
26

PowerBuilder 11.5 and 12.Net For Free!!

A Great Opportunity to get two latest versions of PowerBuilder for free.

By joining the International Sybase User Group (either as a Gold or Green member) you are eligible to

PowerBuilder 12, PowerBuilder 12.NET

PowerBuilder 12, PowerBuilder 12.NET

receive PB 11.5 for free, it is under a special license for developers only and you can’t deploy any production applications with it.

You may also get PowerBuilder 12.Net for free under a similar license, it’s a bit more strict as you have to fill out a form and there is a couple day delay in getting approved. You can use it all you want as long as you don’t deploy anything.

Did I say PowerBuilder 11.5 and PowerBuilder 12.Net for Free?

Well yes, they are free however you must join the Sybase International User Group.  The cost is dependent on your area but it seems to range between $89 and $99 dollars.  This is the deal of a lifetime and I really can’t afford the $89 but I joined just so I had PB12.Net to write some reviews on and compare it to some of the more mainstream web development tools.

Here is the URL

http://www.isug.com/common/Index.html

No, I am not affiliated, nor am I receiving any compensation for sharing this information.  I felt it was an outstanding value and wanted to share it with my loyal readers.  There are lots more benefits but the two I was most excited about were the two versions of PB.

Quoted Directly from the ISUG site:

ISUG Membership Benefits  “Green” Package

This list of benefits can change at any time during the year. New benefits will be made available to our membership base as soon as they become available to us.

The Green Package consists of all the benefits in the other packages, plus a package of free Sybase Software valued at over $6000. This package is available for an incredibly low annual membership fee of $99! (Actual cost may vary by user group.)

The package includes:

  • ISUG Technical Journal
    • A subscription to the monthly online edition of the ISUG Technical Journal, delivered by environmentally friendly PDF.
    • Vote for the Winners of the ISUG Journal Award
  • Software:
    • New Version! Free NFR Developer Edition of Appeon for PowerBuilder 6.2
    • New Version! Free NFR copy of Sybase PocketBuilder 2.5 (e-shop)
    • New Version! Free NFR copy of WorkSpace Studio 2.5 (e-shop)
    • New Version! Free NFR copy of Sybase DataWindow.NET 2.5 (e-shop)
    • New Version! Free NFR copy of Sybase PowerBuilder Enterprise 11.5 (e-shop)
    • New Version! EAServer 6.2 Developers Edition (e-shop)
    • Free Copy of SQL Anywhere Studio for Windows or Linux/UNIX (e-shop)
    • 25% Discount on Power Designer Developers Edition (e-shop)
  • Documentation:
    • SyBooks PowerBuilder Enterprise Technical Library Documentation
  • Discounts:
    • Get a 3 month free trial subscription to the digital edition of the PowerBuilder Developers Journal (PBDJ), and at the end of the trial period you can save 40% on a one-year or two-year subscription!
    • 20% off QweryBuilder from WerySoft.
    • 35% off O’Reilly books.
    • Save 10% off list price on all individual registrations for Sybase Learning Center and SyberLearning LIVE classes.
    • Save 20% on CSP Certification Exams (DBA & IFD) at Prometric.
    • Save 20% on CBTs from Branick Consulting
  • And from the Basic Package:
  • Full access to the ISUG members-only website (with a handful of exceptions).
  • Ability to vote in the ISUG enhancement process, and influence Sybase product direction.
  • Access to the on-line ISUG membership directory, renewal, events/news, and technical links
  • Access to on-line ISUG Enhancement Request process
  • Participation in online Special Interest Groups (SIGs), and access to on-demand replays.
  • Special discounting from VendorRate. VendorRate helps reduce your risk when purchasing technology products and services by viewing vendor customer satisfaction scores as provided by IT professionals.
    • Vendor summary scores will always be viewed free of charge to ISUG members.
    • Vendor detailed scoring information, including comments, vendor comparison reporting tools, vendor tracking and notification, and vendor trends are available on an annual subscription cost of $149 per user.
    • ISUG members receive all detailed scoring information FREE until 12/1/2008. Thereafter, ISUG members receive a $20 discount on the annual subscription price.
    • VendorRate also releases Quarterly Reports and Trade Show reports that list vendors with top customer satisfaction scores by industry and sector. Trade show reports are priced at $99 each, and quarterly reports are $249 each These reports are provided free to ISUG members as long as they rate a vendor each quarter. Access to these reports are free to each ISUG member who rates during a calendar quarter. ISUG members who do not contribute a rating in a quarter receive a $10 discount when purchasing individual trade show reports, and $20 on each quarterly report.

(ISUG Members with the Green package of benefits can find information on how to order their software benefits here.)

* This represents the value of the fully licensed versions if purchased from Sybase at list price. Some of the titles are NFR copies that, while fully functional from a technical perspective, have license restrictions preventing their use in commercial development. For more information, see the NFR License page.

I joined the Orlando area user group, so if anyone else joins that one let me know, I’d like to see if you plan to attend any meetings.

So Is PowerBuilder Dead?

The jury is still out but I noticed some non-scientific evidence that it might actually gaining some interest.  I was willing to wager $89 that it would be worth my while to own PB11.5 and PB12.

Sincerely,

DisplacedGuy (aka Rich)

Nov
03

Silverlight 4 Toolkit – WrapPanel Example

Using the WrapPanel of the Silverlight Toolkit

The WrapPanel control doesn’t come standard in Visual Studio 2010, it has been removed and placed in the Silverlight Toolkit which can be downloaded from Codeplex

Making a Windows Explorer “like” interface using the WrapPanel in Silverlight 4

The WrapPanel is a very useful control that allows you to place multiple controls within it and have either a Horizontal or Vertical orientation.  I’m going to show how you can make cool interfaces such as the Windows Explorer window where controls have a horizontal orientation but when they run out of room they continue vertically.  The best way to describe this is show a real-world example.  The Windows Explorer window is a prime example of how a wrap-panel functions, as you narrow the window size the number of columns decrease, and number of rows increase.

Here is my Windows Explorer window with enough space for two columns

Silverlight WrapPanel

 

And with the window size narrowed enough to fit only one column

Silverlight WrapPanel

Making controls like this in Silverlight 4 (or any tool supporting XAML and WrapPanel) are really simple.

I’ve made each “drive” a separate StackPanel and each of the three StackPanel exist within a WrapPanel.

You’ll notice that I’ve hard coded attributes defining the length and color of the graphic bar that illustrates how much space has been used and amount remaining.  Normally you would set these values dynamically in code.  This example exists for the sole purpose of showing how to use the WrapPanel and high-level overview of  XAML.

Building a Windows Explorer Type Control – Step 1

To use the Silverlight Toolkit Wrap Panel you’ll need to add a reference to the Silverlight Tooklit assembly.  Add the reference by right clicking on the references section of your source code in the Silverlight Project and browse to the System.Windows.Control.Toolkit assembly.

Important: The toolkit is an Open Source add-on and does not ship with Visual Studio. If you don’t have it you’ll need to download and install the Silverlight 4 Toolkit – April 2010 release from CodePlex.  Hint:  Remember the location where you installed the Silverlight Toolkit so that you can add the reference to your projects (see illustration below).

Silverlight Add Toolkit Reference


Add the Silverlight Toolkit to your namespace declarations

Important: Add this to your XAML,  simply paste it along with the other namespace declarations at the top of your code.

xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit"

If you paste the namespace exactly like above then you will use ‘toolkit:‘ as a prefix in XAML that references any Silverlight Toolkit specific code. (e.g.  <toolkit:WrapPanel Name=”SLWrapPanel”> ).     This prefix ties the XAML element to a particular namespace declaration and ultimately tells Silverlight where to find the definition for the WrapPanel.

 

Building a Windows Explorer Type Control – Step 2

The Hard Drive type control was built with several layered StackPanels that go inside the WrapPanel.  The inner-most StackPanel wraps one graphic bar, then another wraps that bar along with the text above and below the bar (e.g. hard drive name and space used/available), and third StackPanel wraps the graphic bar & texts along with the image of the hard-drive. There are three sets of these StackPanel groupings,  one for each hard drive.

The XAML is hard coded, but in real life the code would be generated dynamically.  The graphic bars would be set by making the colored section wider and the empty part narrower.

Take a look at the XAML, you may need to click it to view full size. Notice how each drive was constructed within the WrapPanel.

XAML, StackPanel and WrapPanel

XAML, StackPanel and WrapPanel

The Final Result of WrapPanel shown as Silverlight Page, utilizing the Silverlight Toolkit

The drives will flow left to right and top-down automatically by functionality of the WrapPanel.  I’ve adjusted the width to accommodate two columns.

Silverlight XAML WrapPanel

Silverlight XAML WrapPanel, StackPanel using Toolkit

 

The images used to construct the bars are 4 simple graphics that I made from a print screen of my Windows Explorer.   With these four graphics you can assemble any size graphic bar needed in blue or red.  For example, the first bar of my sample was made using four different graphics set to specific widths.

Hard Drive Creation Process using three nested StackPanels

WrapPanel Contruction using three nested StackPanels

WrapPanel Contruction using three nested StackPanels

 

Windows Explorer Images

Windows Explorer Images

 

I hope this example of using a WrapPanel and StackPanels in XAML while utilizing the Silverlight Toolkit has been useful to you.  The XAML would be quite similar in any programming language that uses XAML such as PowerBuilder or WPF.

 

Sincerely,

Rich (aka DisplacedGuy)

Nov
29

Choosing a .NET 4 Content Management System

My Personal Initiative

Utilize, Learn & Contribute to an Open Source, Microsoft .NET based Content Management System

My justification for the project is primarily to learn, and at the same time investigate ways to use the CMS to better manage my expanding list of websites and content.  I have used a lot of Open Source software and felt that it would be a good time to give back to the community and contribute to an Open Source project.

Some of the personal self-improvement goals I had in mind

  • Become more proficient in the latest Microsoft .NET technologies, in particular ASP.NET MVC, LINQ data access, XSLT and Workflow Foundation.
  • Experience contributing to an Open Source Project.
  • Better understand content management systems.

The main factors used in making my final decision on which content management system to use

  • Microsoft .NET based, preferably MVC
  • Ideally using the .NET 4 Framework
  • Utilizing cutting edge technologies
  • A relatively active developer community
  • An impressive product, one that I’d be proud to be a part of and one I felt could grow to be one of the leading CMS’s

The list of content management systems that I considered

COMPOSITE C1 ended up being a relatively easy choice because it is one of the few .NET based content management systems written using the .NET 4 Framework, not to mention it is MVC and has a very impressive and flexible design. I was impressed with BlogEngine, however didn’t care to invest the time and effort into working with ASP.NET WebForms.  Orchard, Atomsite and N2 CMS were at the top of my list but they didn’t impress me enough to make up for the cutting edge technology in COMPOSITE C1.

Composite C1 CMS Demo Site

Composite C1 CMS Demo Site

The C1 also can be installed with a demo website, the Composite Demo Company, which I’ve already done and is shown.  Having a working site to learn from is really nice option to have.

The technologies utilized in COMPOSITE C1

The Microsoft .NET 4 Framework, ASP.NET 4 Controls, ASP.NET MVC, pure LINQ data access, Workflow Foundation, a pluggable architecture and a documented API.  Very Nice!!

COMPOSITE C1 as defined on the C1 home page

COMPOSITE C1 ALLOWS COMPANIES and organizations, individuals or communities of users to easily publish, manage and organize a wide variety of content on a website. With Composite C1 you have the freedom to choose and switch between a free open source licence or a paid subscription model. Composite C1 is:

  • A professional fully featured CMS
  • Simple to extend and customize
  • Based on the latest Microsoft technology
  • Developed by and for professional web developers
  • Succesfully powering numerous corporate web sites
  • Based on a developer model and licence options that prevents vendor lock-in and secures your independence
  • new 12/6/10 – Kudos to the C1 Team.  C1 works on Google Chrome now!

The Console for Composite C1 is Impressive

Looks more like a desktop application, here you can see it supports embedded C# functions!

Composite C1 Panel Embedded C#

Composite C1 Panel Embedded C#

This gives you an idea of the types of things the developer role in Composite C1 CMS can do.  Also note the Admin and Editor Roles.

Microsoft .NET 4 MVC CMS

Microsoft .NET 4 MVC CMS

And a built in image-editor…

Composite C1 CMS Panel

Composite C1 CMS Panel

And another impressive feature is the concept of packages that can be downloaded and installed from a package source.

Composite C1 CMS Packages

Composite C1 CMS Packages

As you can see the COMPOSITE C1 CMS is an impressive tool, plus it is one of the few that is using the latest and greatest technologies.  Most of the other .NET content management systems are on older versions of the .NET Framework and as of this writing none had any hard-set dates as to when they would be up to the latest version of the framework.

If you are a true-programmer, which I’m willing to bet that you are if you made it to the end of this article, and you love to learn new technologies then the COMPOSITE C1 is pretty much the only choice.

If your criteria doesn’t include “having fun learning new technologies” and “working with exceptionally talented developers” then I believe that COMPOSITE C1′s features alone put it in a short list of viable options.

Sincerely,

DisplacedGuy (aka Rich)

Jan
01

SplitButton Control in Silverlight 4 – Silverlight Toolkit

Using the SplitButton control in your Silverlight 4 Application

What is the SplitButton?

The SplitButton is a nice control that allows you to turn one button into many different

SplitButton Silverlight 4

SplitButton from Silverlight Toolkit

click options.  For example, you might have a Save button, with a split section that drops down with options to Save-As, Save a Copy, etc.

 

SplitButton Examples

SplitButton Silverlight toolkit

SplitButton Samples

 

 

 

Where can you get the SplitButton control for Silverlight 4?

The SplitButton is available for free in the Silverlight Toolkit.  You can download the latest Toolkit from Codeplex.

Steps for using the SplitButton in a Silverlight 4 project


1. Download the latest Silverlight Toolkit from CodePlex.
2. Download the SplitButton Samples and SplitButton Project
3. Add references (right click References) to the Silverlight toolkit and the SplitButton.dll in your Silverlight project.
SplitButton.dll
System.Windows.Controls.Input.Toolkit.dll
4.  Add both namespaces to your XAML, for the Silverlight toolkit and the new SplitButton.
xmlns:splitButton=”clr-namespace:Delay;assembly=SLTKSplitButton”
xmlns:toolkit=”clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit”
5. Add the Split Button code. This makes one button that drops to three options.
<splitButton:SplitButton x:Name=’Button1′ Content=”Open” Click=”Button1_Clicked”>
<splitButton:SplitButton.ButtonMenuItemsSource>
<toolkit:MenuItem Header=”Open” Click=”Button1_Clicked” />
<toolkit:MenuItem Header=”Open read-only” Click=”Button1_ClickedRO” />
<toolkit:MenuItem Header=”Open as copy” Click=”Button1_ClickedAC” />
</splitButton:SplitButton.ButtonMenuItemsSource>
</splitButton:SplitButton>
6. Add Csharp code for click handlers for main button click or any of the three sub-option clicks.
private void Button1_Clicked(object sender, RoutedEventArgs e)
{
MessageBox.Show(“Opening document normally…”);
}
private void Button1_ClickedRO(object sender, RoutedEventArgs e)
{
MessageBox.Show(“Opening document read-only…”);
}
private void Button1_ClickedAC(object sender, RoutedEventArgs e)
{
MessageBox.Show(“Opening document as a copy…”);
}
7. Give thanks to  David Anson, a Microsoft developer who works with the Silverlight, Windows Phone, and WPF platforms. Twitter: @DavidAns

Summary of SplitButton Usage

Using the SplitButton is similar to using other tools in the Silverlight Toolkit, you simply need to add references to the toolkit, and to the button itself, and then you can code the XAML by referring to the xml namespaces you added.

Sincerely,

Rich (aka DisplacedGuy)

Jan
25

Open Website From Silverlight 4 App – Non-OOB Workaround

How to Open Websites from Silverlight 4 and NOT use OOB Setting

As with all workarounds, they aren’t perfect implementations, this one is a start.

The Silverlight 4 Application – Web Browser Running non-OOB

Silverlight 4 Application - Displaying HTML Non-OOB

Silverlight 4 Application - Display HTML Non-OOB

The specific things that facilitated this particular workaround are pretty simple.

First we add an iframe to the test page that the Silverlight application is hosted on.  Silverlight normally generates one for you like appnameTestPage.html.

Second we create a Silverlight page and utilize the HTML Bridge to communicate with the embedded iframe control.  Once we have a handle to the iframe we can manipulate anything about it such as the location, size, visibility, or navigate the DOM and do more advanced things.  As of now I haven’t been able to successfully “get inside” of the iframe, that might be Silverlight preventing me but that won’t stop me from trying.

This is far from complete.  The iframe is simply floating on top of the application and it would take some work in coding resizing and keeping things looking nice.  Another catch is that you’d have to change all the target settings for hrefs so that clicking an internal link doesn’t replace your entire test page.

Silverlight 4 HTML Bridge Overview

HTML Bridge is an integrated set of types and methods that enable you to do the following:

  • Attach Silverlight managed event handlers to HTML controls.
  • Attach JavaScript event handlers to Silverlight controls.
  • Expose complete managed types to JavaScript for scripting.
  • Expose individual methods of managed types to JavaScript for scripting.
  • Use managed containers for DOM elements such as windowdocument, and standard HTML elements.
  • Pass managed types as parameters to JavaScript functions and objects.
  • Return managed types from JavaScript.
  • Control various security aspects of your Silverlight-based application.

Steps To Create Silverlight 4 Browser Application (non-oob)

1. Create a Silverlight 4 Navigation Application, or any Silverlight 4 application will work.

2. Leverage the Silverlight 4 HTML Bridge by creating a new iFrame in the same page that hosts the Silverlight 4 application.  Silverlight normally generates two for you an appnameTestPage.html and an aspx version.

3. Create a new Silverlight navigation page and wire it up.

4. Add textbox, button at a minimum used for entering the URL and firing code to navigate to the URL within the iframe, and to make it visible.  I’ve added controls for testing position.

5. Override the OnPageNavigatedFrom and add code to hide the iframe, otherwise it would be visible on top of other silverlight pages.

note: Here is the code that was added to the test page

Silverlight 4 OOB Workaround Iframe

Silverlight 4 OOB Workaround Iframe

Challenges To Solve

1. Handle resizing of the browser gracefully.

2. Handle changing target property of the href’s.  Not sure if this is possible, from within Silverlight anyway, but maybe you could call some JQuery script outside Silverlight to do the work.

3. Since you are outside Silverlight you lose the advantages of worrying about what kind of browser is being used.

4. My code uses System.Windows.Web so that is an issue.

This is definitely just something to get you thinking… a start… I will gladly post the code for this and if you can improve it please send changes back!  Remember you need to add an iframe to your hosting HTML page (see image).

Application Csharp Visual Studio 2010: sl4-web-browser.zip

Csharp Code Only:  WebB.xaml.cs

XAML Code Only:  WebB.xaml

Summary

So we’ve displayed a web page from within a Silverlight application by using the Silverlight HTML bridge to reference an iframe and manipulate that iframe.  There are plenty of other challenges before this workaround is complete or hopefully a better workaround.

Jan
30

PowerBuilder Predictions 2011, Vote Now!

PowerBuilder Predictions for 2011 – Dead, Alive, Comeback?

No Login Necessary for Voting or Comments!

Vote once per day to see results!    Comments welcome and require no login!

Pass it on…

Short URL for Twitter:  http://poll.fm/2ntjp

Facebook URL:  http://poll.fm/f/2ntjp

update Feb-4, 2011:

The DisplacedGuy – PowerBuilder Predictions Poll 2011

Some preliminary observations:

PowerBuilder isn’t dead

PowerBuilder outlook is optimistic for 2011

Scientific?  Certainly not.

Put this blog on a Java blog and the results might be slightly different. (sarcasm intended)

on a blog of a Java developer you’d probably get areer PB developer and considering the poll is on a tech blog of a career PB developer they might be nothing more than entertainment value.

In – A couple dozen votes, on a PB slanted blog

The results are far from scientific, however they seem to reflect my general feelings about PowerBuilder as of today.  I feel like Sybase has an opportunity, and with some hard work and a little luck they very well could regain market share in the corporate development area and more luck they might have some upside potential.  I’ve been using PB12 on a daily basis for a while now, after recently completing some Silverlight 4 projects, and using other development languages– and here is how I’d describe the feeling…  like the feeling of walking into a warm house from a blizzard,  or falling into a pillow-top memory-foam mattress with freshly ironed 1200-count sheets.   The feeling was of “RELIEF”.

The same thing that made PowerBuilder what it was decades ago is the same thing it has going now, the datawindow… or to be completely technical, the “dataobject” and relationship between the “dataobject” and “datawindow control”.

What about separation of concerns and all the latest development paradigms?

The beauty of PowerBuilder, in my opinion is that you can separate concerns to a “optimal” level for 90% of corporate applications.  For the other ten percent of applications the extra planning and design to maximize separation of concerns is probably cost-effective.   The beauty of PowerBuilder is that we can still develop using all the new object oriented programming paradigms that focus on separation of concerns, not to the point that purists might like but we can do a pretty good job.  But the priceless difference is still that word we’ve been saying for a decade or two, “datawindow”.

Dataobject the one place to put the ugly code.  Like sweeping the last bit of dust under the rug.

Well it’s really the “dataobject” that defines all the ugly application specific code.  The “dataobject” is the rug you can sweep the dust under when nobody is looking and everything else around it looks beautiful you can proudly look at your application that was delivered on time, within budget, users happy for not having to sacrifice on UI because of complexities, and everyone knows about the dust swept under the rug (the “dataobject”) but what matters in business is the bottom line.

WaveMaker is a tool that had me really excited about Java development, however once it came to the dirty details of the UI work, and working with complex data models my Java weakness really stood out.  I wasn’t willing to invest the time to take it to the next level but keep an eye on them.  They’ve got some of the original PowerSoft management on board and have got some momentum going. I’ve got a few WaveMaker articles on the blog if you haven’t checked it, you should.

If YOU were running the show at your company, and you are “in-the-know” about PowerBuilder and followed what I just wrote,  what decision would you make when it came to department level corporate applications?

end of my update Feb-4, 21011

Apr
25

Full Collection of Google Analytics Actuals for DisplacedGuy

 

The Master Index of Google Analytics Actuals for DisplacedGuy.Com

 

Google Analytics, Adsense and Adwords

Entire Collection of Google Analytics, Adsense and Adwords for DisplacedGuy

It has been a year since we started posting actual Google Analytics and Adsense statistics for DisplacedGuy.Com.  They have become very popular but we’ve been told that it is hard to locate each of the reports especially for new readers who would like to view them from the beginning in order.

I hope that this new master index off Google Analytics Actuals for DisplacedGuy.Com helps everyone find the reports better.

Entire Collection of Google Analytics Actuals & Adsense Actuals for DisplacedGuy.Com

Site Launch – March 2010

 

Actual Statistics Reports covering March 2010 through August 2010

Adsense Stats Part 1: Blogging, Can it Pay The Bills?  Intro to Google Analytics Actuals for DisplacedGuy.Com
Adsense Stats Part 2: Learn Google Analytics with Actual Stats for DisplacedGuy.Com- March 2010
Adsense Stats Part 3:  Ugly Secrets of Making Money Online – Analytics Stats for April to August 2010

September 2010 through March 2011 –  Adsense Actual Reports

Google Analytics Actuals on DisplacedGuy.Com for September 2010
Google Analytics Actuals on DisplacedGuy.Com for October 2010
Google Analytics Actuals on DisplacedGuy.Com for November 2010
Google Analytics Actuals on DisplacedGuy.Com for Dec & Jan 2010
Google Analytics Actuals on DisplacedGuy.Com for Feb 2011
Google Analytics Actuals on DisplacedGuy.Com for March 2011

Google Analytics Actuals on DisplacedGuy.Com for April – Aug 2011 – Notables: Traffic increase, PowerBuilder content in demand, Adsense Earnings Pathetic, Visitors with Java at all time low.

 

Format Change for the Google Analytics Actuals

You may have noticed that the format changed, in the beginning we focused on articles about Adsense and Analytics with some actual statistics mixed in.  After the first three reports we decided to report on the actuals on a monthly basis, and each month there is less commentary.  If you are learning about Analytics and don’t know what some of the statistics mean or what their primary value is then I recommend reading some of the earlier posts, at least the first five or six.

 

Jun
01

PowerBuilder 12.5 PB.NET Free Training, Tutorials & Videos

Having a hard time finding  good sources of training and tutorials for learning PowerBuilder 12, 12.5 and PowerBuilder .NET?   I did too so I decided to build the biggest list on the web and I am pretty sure I’ve done it.  Next goal is 100 quality links to help people learn PowerBuilder 12, & 12.5 .NET.    I add to this list regularly so you might want to bookmark this page. I will only post links that offer useful, free content.  I won’t include content that requires registration (exception Sybase) as they likely have motives that go beyond my goal of just $haring.     The list was last updated on Jan 26, 2012

DisplacedGuy’s Official PowerBuilder 12 & PowerBuilder 12.NET Directory of Free Training Resources

Rich Bianco

Rich Bianco (aka DisplacedGuy)

Please email me ( )  for reasons like…

  • Suggest a new link for learning PB12, PB12.5 or PB12.5
  • Report a broken link or non-free link
  • Regarding a PB contract (Actively under contract with IBM)
  • Tell me what I can do to improve the site.
  • Please click the Google +1 on the top of all pages you enjoyed

 

 New Links added Jan 2012

new Official PowerBuilder documentation sets for all of the recent versions of PowerBuilder along with archived versions all the way back to PowerBuilder 5.

new New link to Techno Kitten website, source for history of PowerBuilder and a very detailed list of changes by version beginning with Version 2!

DisplacedGuy PB 12.5 .NET Training Series

coming very soon Create a full working application that utilizes PowerBuilder WCF Services, PB12.5 .NET Custom Visual User Objects (CVUO), .NET Assemblies,  Conditional Compilation, Microsoft SQL Server 2008

DisplacedGuy’s PB Learning Articles

Creating my first PowerBuilder 12.5 .NET WCF Service.  - This is an overview type article that summarizes my experiences creating a PowerBuilder WCF Service using PB 12.5 .NET, MS SQL Server 2008, and ASP.NET MVC3 as the client website utilizing the new WCF service.

Creating & Using a PowerBuilder 12.5 .NET WCF Service. – This step-by-step article contains over three dozen print screens and is a very detailed step by step process that I used when creating my first WCF Service.  This is intended for PB developers who have not yet created a WCF Service.

Mapping PowerBuilder and .NET (C#) data types.  - This is a reference page containing mapping of PowerBuilder and .NET (C#) data types.


DisplacedGuys Favorite PowerBuilder Learning Links

RESTful Service Quick Start Video -  by expert Yakov Werde  (26 minutes, Flash)

Mr. Werde will take you through all of the steps involved in writing a PowerBuilder application that utilizes RESTful web services.  This quick start video covers the following subjects.   1. Creating a basic PowerBuilder framework that partitions the logic into libraries.   2. Examine some existing free RESTful services, and the XML or JSON return values using Fiddler.   3.  Examine XML project.  4. Examine JSON project.  5. Code the RESTful service.    This quick start example also illustrates the use of CVUO’s (custom visual user objects).

 

PowerBuilder 12 Sample Apps & PB 12.NET Code Examples

 

PowerBuilder 12 Video Tutorials and Training for PowerBuilder .NET

 

  • Video Demo: PowerBuilder .NET Guided Tour — Part 1 -Take this guided tour through PowerBuilder 12 to see for yourself how it’s the “Hottest Thing Yet to ROCK .NET
  • Video Tutorial: WPF Benefits for PowerBuilder Developers -PowerBuilder 12 is the only development tool that allows developers to migrate their Win32 applications to WPF.
  • Video Tutorial: PowerBuilder WCF Client Support -PowerBuilder 12 supports WCF by enabling applications to consume next generation Web Services.
  • Video Tutorial: Powerscript Language Enhancements -PowerBuilder 12 includes several major Powerscript language enhancements to make development faster and easier than ever
  • eTutorial: PowerBuilder 12 .NET StockTrader Sample Application - This eTutorial, based on the StockTrader Sample Application, highlights PowerBuilder 12.0’s abilities as both a development environment and a runtime platform for rich and thin clients. The PowerBuilder clients are delivered in four versions; Classic Win32, .NET Win Form, .NET Web Form and .NET WPF WCF.  These client applications illustrate how you can leverage PowerBuilder’s enterprise .NET APIs, DataWindow Technology, and the PowerScript coding language in a developer-friendly and productive IDE to rapidly build Microsoft-compatible client applications.
  • PowerScript .NET Tutorial – Full Length Video - This self guided tutorial will show you how to create fully CLS compliant .NET Win Form and WPF applications using PowerScript code and employing new and current language features inside PB 12. Concepts covered include .NET Language interoperability; the Common Language Specification, creating .NET Consumer Role compatible applications using the PB 12 Classic IDE, and creating .NET compatible Extenders using the PB 12 .NET IDE.
  • PowerBuilder and WCF Tutorial – Full Length Video - This self guided tutorial will show you how to use PowerBuilder .NET together with the Microsoft .NET Communication Framework to create rich client applications functioning in an enterprise Service Oriented Architecture. Concepts covered include an overview of the tenets of Service Oriented Architecture (SOA), an overview of the scope of the Windows Communication Framework (WCF) and the integration issues it addresses. Definitions are provided for fundamental WCF concepts.

 

PowerBuilder 12.5.NET – Sybase Online Books

 

PowerBuilder 12 Migration – Migrating PB Classic to PowerBuilder 12 .NET

Part 1 Migration Overview and Process
Part 2 Platform and Language Issues
Part 3: Sample Application Tour: Anchor Bay Nut Company (ABNC)
Part 4: Migrating and Refactoring ABNC]

PowerBuilder 12 and PowerBuilder 12.NET Training Videos on YouTube

PowerBuilder 12 and PB.NET Presentations from Sybase Tech Days 2011

 

 

Exceptional PowerBuilder How-To Web Articles for PB12, 12.5 and PB.NET

Learn PowerBuilder RESTful web services, Docking Manager & NVO Services.

Other Web Links

 

PowerBuilder Training Material – Prior to PB 12 & PB12.5.NET

Deploying PowerBuilder Applications with the PowerBuilder 11 Smart Client Intelligent Updater (Videos)

PB Tech Corner – Links To

Official PowerBuilder 5 – 12.5 Documentation Sets

Document Set ( * = archived ) Version Language
PowerBuilder 12.5 12.5 English
PowerBuilder 12.1 12.1 English
PowerBuilder 12.0 12.0 English
PowerBuilder 11.5.1 11.5.1 English
PowerBuilder 11.5 11.5 English
PowerBuilder 11.2 11.2 English
PowerBuilder 11.1 11.1 English
PowerBuilder 11.0 11.0 English
PowerBuilder 10.5.2 10.5.2 English
PowerBuilder 10.5.1 10.5.1 English
PowerBuilder 10.5 10.5 English
PowerBuilder 10.2.1 * 10.2.1 English
PowerBuilder 10.2 * 10.2 English
PowerBuilder 10.0.1 10.0.1 English
PowerBuilder 10.0 10.0 English
PowerBuilder 9.0.3 * 9.0.3 English
PowerBuilder 9.0.2 * 9.0.2 English
PowerBuilder 9.0.1 * 9.0.1 English
PowerBuilder 9.0 * 9.0 English
PowerBuilder 8.0.4 * 8.0.4 English
PowerBuilder 8.0 * 8.0 English
PowerBuilder 7.0.2 * 7.0.2 English
PowerBuilder 6.5 * 6.5 English
PowerBuilder 6.0 * 6.0 English
PFC 6.0 * 6.0 English
PowerBuilder 5.0 * 5.0 English

PowerBuilder Migration  Assistance Documents

Techno Kitten Blog has an outstanding archive of the history of PowerBuilder including new PowerBuilder features by version, migration issues by version, and hints about future PowerBuilder and Pocketbuilder releases.

PowerBuilder Groups and Associations

Sybase International User Group – Great place to learn, get free copies of PowerBuilder 12 and PowerBuilder 12.5 .NET !! Please tell them that Rich Bianco at DisplacedGuy referred you!

PowerBuilder Facebook Page

Oct
11

Creating a WCF Service using PowerBuilder 12.5

Creating My First WCF Service using PowerBuilder 12.5 .NET

I’ve finally taken the time to start digging into PowerBuilder 12.5.NET and this time I wasn’t going to stop until I had a working WCF Service created.  Not only did I want a working WCF Service created entirely in PowerBuilder, but I wanted it to access a Microsoft SQL Server 2008 database and consume the service in a Microsoft ASP.NET MVC 3 Telerik website!  I’m happy to say that it took less than a day to throw together a working WCF Service that accessed Microsoft SQL Server 2008 database, and use that service to provide data to my ASP.NET MVC3 website.

A Quick Review of WCF Service Basics

The first steps I took prior to starting up PowerBuilder 12.5 .NET were to go over the basics of WCF and WCF Services.  Not only had I not created a WCF Service in PowerBuilder, but I had not created one in Visual Studio either.  WCF Services were one of those things that seemed simple enough in concept but any time I tried to create one I ended up spinning my wheels and running out of free time (or energy) to follow through.  Not this time…

The five basic tasks in creating a WCF Service right from the Microsoft Website are, in order:
  1. Define the service contract. A service contract specifies the signature of a service, the data it exchanges, and other contractually required data. For more information, see the Microsoft documentation on Designing Service Contracts.
  2. Implement the contract. To implement a service contract, create a class that implements the contract and specify custom behaviors that the runtime should have. For more information, see the Microsoft documentation on Implementing Service Contracts.
  3. Configure the service by specifying endpoints and other behavior information.  And more information at Microsoft on Configuring Services.
  4. Host the service. For more information, see Hosting Services.
  5. Build a client application. For more information, see Building Clients.

I have to admit that it’s been more fun than I expected.  Due to the lack of good information about PowerBuilder 12.5.NET I decided to document the entire process of creating a WCF Service with PowerBuilder.  This article takes you through the initial steps that I took of getting a WCF Service working with PowerBuilder 12.5 .NET and I went through the process twice just to make sure that it should work for everyone.

A Look At The Finished WCF Web Service

When you create your web service you’ll have the option of hosting in IIS or hosting as a console application.  Hosting as a console application is a little easier so I went with that one first.  There are some settings in IIS that make hosting in IIS more challenging, and make using the console application while developing a good idea.  The running web service that I created with PowerBuilder 12.5 .NET doesn’t look very impressive at all.  Here is how it looks as a console application.

PowerBuilder 12.5 WCF Web Service

PowerBuilder 12.5 WCF Web Service

I started the web service from within PowerBuilder in the project object.  There is a button for starting the web service and one for testing the web service for basic information about the service contracts and endpoints.

Here is the project painter screen where I started the web service… the Run Web Service button starts the service as a console window like shown here.  The View WSDL will open a browser page showing information about the web service.

WCF Service in PowerBuilder 12.5

Start WCF Service in PowerBuilder 12.5

 

 

 

 

 

 

Viewing the Web Service WSDL information

Web Service WSDL

WSDL Basics

Since WSDL is a machine-readable language (e.g., it’s just an XML file), tools and infrastructure can be easily built around it. Today developers can use WSDL definitions to generate code that knows precisely how to interact with the Web service it describes. This type of code generation hides the tedious details involved in sending and receiving SOAP messages over different protocols and makes Web services approachable by the masses.

The Microsoft® .NET Framework comes with a command-line utility named wsdl.exe that generates classes from WSDL definitions. Wsdl.exe can generate one class for consuming the service and another for implementing the service. (Apache Axis comes with a similar utility named WSDL2Java that performs the same function for Java classes.) Classes generated from the same WSDL definition should be able to communicate with each other through the WSDL-provided interfaces, regardless of the programming languages in use.

 

WSDL Basics

 

 

 

 

 

 

 

The ASP.NET MVC3 Website that is utilizing the PowerBuilder We.NET created Web Service

Notice in the text that this web service call was getting a Category by category id.  The next example gets a Category by Category Name using the first few letters (like).

 

 

 

ASP.NET MVC using PB.NET WCF Service

ASP.NET MVC using PB.NET WCF Service

 

 

MVC PB Web Service

The second example searches by Name.

 

 

 

 

 

 

 

I was able to set up the Web Service, and MVC pages in just a few hours and that includes coming up to speed on PB12.NET.

 

 

 

For more details continue on to the Step by Step process of creating the Web Service in PowerBuilder 12.5 .NET

 

If you have any questions on this so far, let me know.

Regards,

Rich (aka DisplacedGuy)

May
16

WaveMaker – Take Two – PowerBuilder Pro Reaction, OMG

The Latest WaveMaker is freaking Amazing – Look out Microsoft – Goodbye PB!

Has anyone seen the new WaveMaker?    I wrote an article about it a while ago and was pretty impressed with the tool.  I don’t remember which version I was using then but it reminded me a little of PowerBuilder, in that you can put together impressive applications in a short amount of time.  WaveMaker is used for developing AJAX web applications (with nearly any database) very quickly and it was so far ahead of its’ time that it reminded me of PowerBuilder.

If you want to take a look at my original article you can look here…

WaveMaker delivers for the web like PowerBuilder did for client server

Well I downloaded the latest WaveMaker last night, and I was blown away all over again.  The tool is much more refined than I remember and if you can believe it, even easier to use than before.  The think I loved about WaveMaker before was that everything seemed intuitive, maybe because it is remotely similar to PB– I’m not sure but it just comes naturally — even more so than Microsoft products.

Too Dramatic?  Maybe so –  download it yourself and spend just one hour, then tell me I’m wrong…

Well let me get to the point here.  Last night I downloaded WaveMaker, and I created a database driven application with one main table and a couple look-up tables.   I didn’t want to try many-to-many relationships because I only had not planned on spending much time playing with it, well I wish that I had tried because my little test was too easy.

I plan on trying out the many-to-many relationship soon, I noticed that WaveMaker was advertising support for it, if my memory is right they even had a tree-view control for such situations.  If that works as seamlessly this PowerBuilder developer may jump on the WaveMaker bandwagon again, and for good.  The few things that I disliked about WaveMaker the first time around seem to be gone.   The things that I didn’t like about WaveMaker before seem to be gone, I had problems before when making changes to my database, but this is no longer the case.  I had trouble finding documentation when I needed it– this is pretty much no longer the case– the truth is that I never really needed the documentation.

I was never impressed with Java – but maybe WaveMaker is what Java needed.

My resume is decorated with more than half a dozen Fortune 100 clients spanning a period of 20 years and I can think of maybe one or two successful Java projects.  Some of the projects were multi-year disasters, some had big-name consulting firms added on to save the project only to see them dumped entirely.   I apologize if that offends any Java developers but it is the reality that I witnessed.  I never witnessed a PB project failure, however I have seem some poorly designed projects that were an embarrassment to the tool.    Java, like PowerBuilder is a powerful object oriented development development language that can work great with the right team, but it can be disastrous when put in the wrong hands.  WaveMaker may be exactly what Java needs to take it to the next level.

I still don’t like Java but love WaveMaker and am taking a second look.  I’ll follow up with more details, but I highly recommend you give it a try.  The tool automatically (upon setting up the DB properly) handled setting up basic CRUD application including handling of the look-up table (via Foreign Key) in a way that was easier than PowerBuilder and much easier than Visual Studio using Silverlight, MVC, ASP or WPF.   I expected a slight challenge in making the drop down work– but instead it just worked out of the box– and the way it worked was cool, the tool mapped the id and description columns auto-magically which in my opinion is cooler than PB or any Visual Studio .NET language– unless you fork out dough for third party controls.

I think WaveMaker has caught up to PB in productivity, and passed Visual Studio (Silverlight, ASP, MVC, etc) a while ago while Microsoft keeps jumping from one idea to the next doing each one just marginally better.  Microsoft is great for making sample applications, and I think WaveMaker is beyond the making sample applications — I need to spend a little more time using WaveMaker but it looks like the real deal.  If they go public might want to buy that stock.

Check back for more info soon.

Nov
22

Wikipedia Pleas for Money, Should we give Wikipedia Money?

Wikipedia Plea, Jimmy Wales Plea for More Money in 2011

The decision is as easy as 1, 2, 3

Well, if you enjoyed my rant about Wikipedia’s Plea For Money last year, you are in for a real surprise this year!  I’ll show you how great things went for Wikipedia last year while most normal businesses were suffering.  Let’s start with the basic question…

 

Wiki Plea for Donations Picture
Wiki Plea for Donations Banner

 

1.)  WHY does Wikipedia need our money?

To protect and sustain Wikipedia.  (source)     Fair enough, Wikipedia is a nice website, it offers a lot without advertisements so I can understand wanting to protect it and keep it running.  I’ve used Wikipedia, however I don’t donate and don’t plan to.

2.)  How much money does Wikipedia have?  What are they worth?

The balance sheet is the gold standard for determining the financial health of a company so that is what we’ll use here.  We need to see how much danger Wikipedia is in not being able to sustain operations.  To put things into perspective I’ve included the financial health of two well known US companies, General Motors & Pfizer.

General Motors was founded in 1908 and is headquartered in Detroit, Michigan. The company operates as a subsidiary of United States Department of The Treasury. GM operates as a global automaker.

Pfizer is a US based bio-pharmaceutical company that offers prescription medicines for humans and animals worldwide for dozens of diseases including Alzheimer, Epilepsy, Renal Cell Carcinoma & Life-long bleeding disorder… see all

All amounts are in Millions of dollars, based on most current balance sheet data, Wikipedia has a net worth greater than General Motors & Pfizer combined!  Wikipedia’s net worth is just short of doubling every year.  From $8.6 million in 2009 to over $26 million in 2011!

Company 2009 2010 2011
______________________________________________________________
Wikipedia $8.6 M $15.4 M $26.1 M
General Motors -$23.9 M -$7.4 M $4.3 M
Pfizer  -$20.3 M -$13.6 M -$10.9 M*

* Quarterly Report used — yearly unavailable

Wait….

Hold on a second…  Can this be right?

Wikipedia is just about doubling their net worth every year, and they employ less than 100 employees,  somethings is fishy there.   They are worth about $32 Million more than Pfizer & GM combined.  It looks like Wikipedia is plenty protected and sustainable, but let’s look at the consequences should we lose it!

WHAT IF we lost _______ ?

Wikipedia

  • You would be forced to use search engines more, dig harder for info.
  • The US economy would lose under 100 jobs.
  • The cost of advertising on the internet would drop helping all companies trying to advertise and competing (bidding the price up) with Wikipedia for keywords on Google Adwords.
  • The millions donated to Wikipedia could be used as vouchers for medication for those who cannot afford helping sustain Pfizer and other pharms.
  • The millions donated to Wikipedia could be used as incentive to GM and other automakers to develop alternative fuels and reduce our dependence on oil.

Pfizer

  • We may lose many life saving medicines.
  • The US economy would crumble with the loss of 106,500 full-time jobs
  • All humans and animals would expect a possible loss of life quality.

General Motors a subsidiary of United States Department of The Treasury

  • We lose one of the icons of American auto makers.
  • More imported automobiles.
  • US economy suffers loss of 210,000 jobs.
  • US Treasury possibly weakened due to investment in GM

 

Just a little about me…

Let me say that I am all for donating to charity and helping others.  I even made my own a plea for donations once on this site via blog post.  My plea, to get people to help the Red Cross with the crisis in Japan happened to around when I was unemployed and the job situation was bad, we were nearly bankrupt, our electric & water had been shut off, and my family were sleeping in a tent in the back-yard because it was too hot inside the house.  This website got shut down (for a few days) because I couldn’t afford hosting fees.  The reason I share these things is not to make me look like a saint, but rather show that I do have compassion and believe in charity.

Wales said, “I got a lot of funny looks ten years ago when I started talking to people about Wikipedia.”

Not just then…

Funny

Wikimedia Foundation Triva

The foundation is exempt from federal income tax under Section 501(c)(3) of the Internal Revenue Code and from state income tax under Chapter 220.13 of the Florida Statues and Sections 23701(d) of Revenue and Taxation Code of the State of California.

What is Wikipedia spending money on now?  Note: I could not find the report for 2011 and will update data when it is available.

Interesting Summary Data for spending in 2010

  • Travel Expenses per Employee: $19,860.96
  • Average Employee Wage & Salary: $146,180.67
  • Internet Hosting Costs $1,056,703 yet they received .5Million in donated hosting and bandwidth
  • Mysterious Expense Called “Operating” with no other details: $3.846 Million up by over 300% from 2009

So where were the increases from 2009 to 2010?

“Operating”?  Expense was the biggest expense increase at over 300% from 2009 to 2010

$1.2 Million in 2009  more than tripled to $3.8 Million in 2010

The one expense that they don’t provide detail on bloated by 300%

** keep in mind we’ve already paid the lease, wages & salary, hosting, losses on lease sublet, in-kind expenses, Travel, and “Other”

Brand New Expenses for 2010 – Stuff They must have needed

Special event expense: $70,407

Awards & Grants: $208,662

Supporting Details of Data Above

Travel Expenses for 2010: $476,663

$19,860.96 per employee!

Higher than 99% of the real corporate world (e.g. NON non-profit organizations), the one that Wiki competes against for SERP position.

Wages & Salary

Salary & Wages for 2010: $3,508,336 of which was broken into three categories Projects, G&A, Fundraising however it was all recorded as Salary and Wages

Salary & Wages for 2010:

$146,180.67 Average Employee Salary

Don’t you love non-profit organizations?   They are one of the BEST places to work.

3.) Why We Should NOT Donate to Wikipedia?

The economy is in the trash, people are being thrown out of their houses in record numbers, the jobless rate is at an unsustainable rate, the US government has gone so far into debt that they have surpassed the threshold at which not any government with paper currency has EVER recovered.   Many European countries are experiencing financial distress and we are on the brink of a world-wide economic collapse.

Some asked me last year, what does Wikipedia have to do with the national debt.  My answer is that it doesn’t have anything to do with it, but my point was there are far more important causes to donate your money,  help feed the starving,  people in need of medication,  invest in alternative energy sources,  invest in education…

Lets end my personal RANT with Mr. Wales final plea for money… blah, blah, blah, I enjoy the part about  ”just enough” people decide to give… just enough to double our net worth every year and increase our benefits & pay per employee.

If everyone reading this donated $10, we would only have to fundraise for one day a year. But not everyone can or will donate. And that’s fine. Each year just enough people decide to give.

This year, please consider making a donation of $5, $20, $50 or whatever you can to protect and sustain Wikipedia.

Thanks,

Jimmy Wales

Wikipedia Founder

Thanks for the Wiki Mr. Wales.  By the way, you should have done your homework before the plea, sincerity is one of the most difficult things to fake.

Sincerely,

Rich (aka DisplacedGuy)

p.s.  To my beloved readers. I have avoided topics related to politics and other sensitive areas until now.   I apologize if this offends anyone it was written with the most positive thoughts in mind, thoughts of fixing problems that really need fixing… at least in my humble opinion.

Older posts «