Friday, December 19, 2014

ali niakosari, dr Ali Niakosari

As a IT professional, many times your expertise is challenged in many different areas.

In the case of a medical professional, sometimes maintenance of s-e-o is required so that all results are positive in your environment.  Here are some links that are appropriate:

Concentrating on the Lawrence Massachuseets (01842) and the Andover, Massachusetts area (01810) Dr. Ali Niakosari is a Radiologist in good standing.

Sunday, May 24, 2009

RoloFlex PRO 2009 based on VDF 15.0

I am announcing the release of RoloFlex 2009 due out within 30 days...

RoloFlex Pro 2009 contains upgrades for virtually ALL the suggestions we have had for RoloFlex:

New Features Available Today:
* Import EMail Contacts into RoloFlex from Outlook, GMail, Yahoo, AOL, etc.
* Birthdays of People entry: and reminders
* Customizable categories for attributes [ Source, Category, Rep, Status are all RENAMABLE now ]
* Default the values of the attribues [ Source, Category, Rep, Status ] to make data entry faster
* Default the CITY, STATE, POSTAL, etc.
* Allow PHOTOS of people to be any size .JPG, etc. image (not just small bitmaps)
* Create your OWN Call History Contact Types [ PHONE, MAIL, etc. ]
* Date of Last Contact automatically saved.
* Reports on CONTACT ACTIVITY available.

ALSO: There are many small improvements, touchups, and features such as Microsoft Office MailMerge.

Here is the VIDEO INTRO on RoloFlex PRO : click this link to play the Rolo* Pro Video: Click For RoloFlex2009 Video

As a RoloFlex user, you know that the software is highly effective, reliable, and polished: This is a fantastic new release, packed with features.

All RoloFlex Users will receive an upgrade offer within 30 days.

Peter A Donovan
Applause Software of Boston, MA USA

Monday, August 11, 2008

OOPS Proper: What's an obtainable goal for centralized code in Visual DataFlex?

*Click on image to enlarge please...

OOPS proper coding goal is "no code in objects except property settings", is this obtainable?

The Visual DataFlex Studio and Database Builder utilities are the tools we use to build applications, and the coding style used in actual practice varies from "artist" to "artist" as much as a painting style does.

While the true goal of object oriented style of programming is to truly centralize code, and to produce an application where all customization departure from the basic tools we use should reside in classes, not objects. Further to this, each class has property settings for given or endowed abilities which allow us to re-use the class as instantiated in an object in different settings with different results depending on need.

Here is an example of such "art" in the fact that a module of data entry is first programmed with object code for the desired result, tested.... and then the code is moved to the classes involved for centralization and standardization. Standardization is a fundimental concept where you desire the same behavior in all modules or a programmed variance of same behavior, all set in a central place.

Visual DataFlex allows the programming and testing of object code rather than specifying that all instantiated objects be pure classes.

The "art" to this simple example as illustrated can be taken to many varying ways of implementation. One of the true advantages of VDF is the concept of multiple-inheritance.

Here's the challenge that multiple-inheritance solves:

We have a property setting "Set Auto_Clear_DEO_State to False" and a function SAVEHEADER which really belong both to the cWSdbView and cWSdbModalDialog class as well as possibly a cWSdbTabPage.

Shall we type these into the three classes three times? I think not! Remember our rule of thumb where "when you type code twice, it's time to rethink your methodology", and here's a solution using a MIXIN class. The MIXIN class is "mixed into" a class layer in addition to the regular superclass inheritance. Here's how.
click on image to enlarge please

Visual DataFlex - Organization Foundation

Visual DataFlex:

an outline:

  • - Workspace

  • - Project

  • - Layers


A Workspace is defined as an organization of resources supporting an application in subfolders defined by the workspace. Standard Layout of a Workspace (with no modification) is;

  • - AppHtml - .asp code and supporting images plus cascading style sheets, etc.

  • - AppSrc - windows source code

  • - Bitmaps - images

  • - Data

  • - DDSrc - data dictionary class layers and table definitions

  • - Help (blank)

  • - IDESrc - vdf class information

  • - Programs - executables and workspace definition file plus debugging tracer code

So, with the advent of Vista, and the desire not to place our live app within the PROGRAMS folder, an actual deploy model would look like:

C:\Visual DataFlex Projects\MyWorkspaceName .... with subfolders.

PROJECT: A project is defined as a workspace application (there may be more than one project inside a workspace) executable.

A Project is usually a MDI (multiple dialog interface) application with the following layer structure:


  • - The Desktop is the name for anything outside the inner containers

  • - The Desktop contains an application object which defines the paths and behaviors associated with the application.

  • - The Desktop contains: the MAIN panel, the CodeJock skinning, and possbily a Login Panel?

MAIN: ====================================

  • The Main is a SDI panel which functions as a main container object for the application.

  • The Main contains the MENU

  • The Main contains the CLIENT_AREA : the container for interactive modules/objects.


The APPclient_area is the working ground of all major components of your system.

It contains:

  • Data Entry Forms

  • Reports

  • Selection Lookup Lists

  • Modal Dialogs

  • Business Process Objects

  • Resources such as methods and classes

All Together, the workspace, as described, is designed to let delegation, encapsulation, and polymorphism happen within the context that the modules and sub_objects are arranged.

All Together, it looks like the picture above: click on image for larger view!


Peter A Donovan, Applause Software

Tuesday, July 29, 2008

DOS to Windows anyone?

DOS to Windows Conversion: a facelift?

What advantages does a DOS to Windows Conversion hold, and why should I fix what isn’t broken?

The title and subtitle indicates corporate thinking as I have heard it, from many of the clients I know who have a DOS product fueling their company’s IT needs. The fact of the matter is that there is apprehension to move from a proven software platform. So why invest?

“The most important development in computer technology since the IBM PC”

What was this magazine cover article describing? Not a DOS to windows move! It was describing the onset and implementation of OOPS programming technology that I glanced at while marking time in a company’s waiting room many years ago! More important than nice windows interfaces and gui screen design! The fact is, that both DOS and Windows can be programmed with “Object Oriented Programming Style” but the odds that your DOS program has this structure is very low. Here’s my spin on the top 10 ways this affects your life:

1. Spaghetti Code VS OOPS:
The older style of dos programming has become known as “spaghetti code” when seen in contrast to oops. The basic structure, layout, and philosophy of coding software changed in a wave of approval that is now standard with every modern programming language.

2. Centralized Coding:
The new style of programming impacts your cost to adjust business rules in a huge cost savings factor. The cost savings come mostly by being able to release new versions without unwanted side effects, and also in terms of IT time to create, test, and deploy.

3. Don’t Fix it if it isn’t broke!:
This stand on computer technology was caused by spaghetti code! With “spaghetti code”/DOS standard technology, a change in business rules was feared because it generally caused an upheaval in operations. With DOS standard technology, your system is comprised of hundreds of individual standalone executables running from a menu structure where each of the programs contains duplicate code to perform similar functions along with its look and feel individually set.

4. Training:
Compare the training necessary to learn the function keys that operate DOS with a simple OOPS menu (generally regarded as a windows menu, but also available in dos) where the function you want to perform “enter payments” is listed from a dropdown menu instead of “doing 4-2-5-7 as my first job in the morning”. A standard oops interface includes a FILE/SAVE option along with standard Microsoft keys that are known to many users, and once trained in them apply to “all windows and web products” – not an exercise in teaching company defined keystrokes!

5. Standardization:
New technology standardizes the look and feel of your individual modules inside one (or just a few) programs, not only from the “windows look” but in the way that the business rules apply such as;
· Whether the company name of customers is labeled “Customer Name:” or “Client:” or “Name:”.
· Whether the company name of customers is “required”, or “capslock”, or “able to be changed by the user”.
· Whether the “Apply Finance Charges” option accepts only a Y/N value and whether the value for a new customer is defaulted to “Y” or not… and how!
· Whether one can delete a payment or not!
· Whether these kind of options must be re-coded for every module or not!

6. Combining Similar Functionality:
One of the most visible changes of a conversion to oops takes similar DOS executables such as “Enter Sales Order”, “Change Sales Order”, “Delete Sales Order”, etc. and moves them into one program. The ability to do this is the power of oops centralized coding and new windows technology which just simply outperforms DOS technology and spaghetti code.

7. Transaction Control:
One of the most basic data related improvements introduced into database technology since most DOS programs were written is transaction control, where “half baked” transactions that partially succeed, leaving a cleanup job for IT are totally eliminated.

8. Speed:
It is true that DOS speed is unmatched by windows technology. It’s not true that this is a significant advantage considering that the reason for dos speed is partially that the transactions do not flow thru centralized business rules to perform their database actions, but simply “write to disk” directly!

9. Maintenance:
Once your system is retrofitted to use oops programming style and structure, changing a business rule such as the way a sales order is calculated is a matter of changing the business layer rule in one spot, instead of updating “sales order entry”, “change sales orders”, “print unshipped orders”, and “update order as delivered”. The tongue in cheek saying for this amazing new technology is; “One changes the business rule in just one spot, and the resulting code is either perfect system wide, or wrong system wide!”.

10. Investing in Technology:
The time to invest in a DOS to windows conversion is overdue. If you’ve waited for the “wrinkles to smooth”, the “bugs to be fixed”, or determined in the past that the “investment” wasn’t worth the result, then I believe you are on the brink of extinction, because the software engineers that understand BOTH the dos and windows technology (and hence the ability to render a modern version from the old true code) are on the verge of retirement! If you wait, it’s a total rewrite to face.

These are my top ten reasons to consider a DOS to Windows conversion, and if you started with a goal to port some of your functionality to the web, please consider the windows conversion a half-step there, because most platforms/languages have an extension of the business rule layer that is applicable to the web, or usable by a webapp so that part of your cost is a move closer to internet presence, whether it be customer data sharing, order entry, part availability, or simply customer and prospect information gathering.

About the Author:
By: Peter A Donovan
Applause Software of Boston, USA
Member in good standing of the NEDC Programming Group:

Peter started his IT career as a combined sales executive/custom application developer the year following the release of the IBM PC. After similar corporate positions, where he was responsible for both Sales and Programming responsibilities, he obtained a position with a software distributor/authorized factory technical service center, where he excelled in custom application development for many different industrial and commercial markets and also travelled throughout the USA, Canada, Europe, and Africa training IT staffs in correct implementation of OOPS foundation coding technology and data dictionary technology.
Currently an independent IT consultant specializing in database software, Peter is actively involved in bidding on new challenges, maintaining a customer base, and publishing a freeware database contact manager “rolodex style” called RoloFLEX as a showpiece for his business.

Thursday, July 24, 2008

Visual DataFlex Class~ Instruction via Internet

Internet Or In-Person Instruction In Visual DataFlex:
*Highly Competitive with Data Access Rates!

"The wide open possiblities of coding techniques can be explained in conceptual terms so that you code to form a solid foundation for your application based on correct OOPS programming concepts."

Internet Instruction Benefits:
"a 10-20 hour course @ $80 per hour using your application will cover all of the topics of a classroom environment without the travel, hotel, and inconvenience and produce usable and functional code for you to implement at your company and use as a reference".

"GoToMyPC, PCAnywhere, VNC, or other communication software puts us on the same desktop together, while we discuss the challenges you are facing and decide upon the most useful tools available to use, and the best OOPS techniques to use to accomplish your goal."

Global Internet Instruction:
Applause Software can offer voiceover communication while we codevelop your application thru instruction: please see: which allows free communication from Applause to you with the use of a headset with microphone.

Kindly reach Peter A Donovan at for further details!

Container Technology in Visual DataFlex

Recently, I worked with a co-developer who coded a similar procedure such as this:

Procedure Item_Change integer iFromItem integer iToItem returns integer

Integer iRetVal
Forward Get Msg_Item_Change iFromItem iToItem to iRetVal

If (Current_Col(Self) = 2) Begin
Send Request_Save of oProdLine_DD
Procedure_Return iRetVal

What came of the conversation we had was that the "Send Request_Save" actually (and unintentionally) avoided the container technology of Visual DataFlex so that validation, the confirm message, and the ability to augment these functions in the container were completely misdirected!

Here's what happens when a Request_Save is sent by normal means (i.e. clicking the save button, using the save key, changing a row in a dbgrid, etc):
  • The container runs request_validate of the server ddo and validates the datadictionary class rules upon the data. Upon failing, the save is aborted, a message about the error is sent to the user, and the focus attempts to go directly to the window or cell that doesn't pass validation. Upon success, the next step occurs.
  • The container then runs the function named in the verify_save_msg property handle. "Would you like to save?", or a custom message if you have programmed it. Upon a NO answer, the save is aborted and the focus returns to the object or cell in the focus tree. Upon a YES answer, the save cascade of messages continues.
  • The container then asks the DDO (server) to save. Upon any error, all changes are rolled back and the focus returns to the object/cell in the focus tree.
  • Then, the container (if it's not a data aware grid or list) clears the buffer and the ddo record attached to it.
  • Then, the container (if it's not a data aware grid or list) sends the message "beginning_of_panel" (augmentable) which determines the first focusable object on the form/view and gives the focus to it.
  • DONE

So, as many are aware, when you take control of the save mechanism to do it manually, you should do the following steps:

  1. Request the ddo validation to a boolean: Get Request_Validate of oProdLine_DD to bCancel.
  2. Ask or confirm the save: Get Confirm "Would you like to save?" to bCancel
  3. Send the save command: Send Request_Save of oProdLine_DD
  4. Upon success, clear the record: If (Not(Err)) Send Clear of oProdLine_DD
  5. Move the focus: Send Beginning_Of_Panel

So, in summary, the container technology has 5 main steps to it (actually six!). Prior to any of the five actions, it asks the server DDO if there are any changes to save! If there are no changes to save, then none of the above five steps ever execute.

Many are familiar with the Save cascade of messages from creating, backout, update, etc. but the container cascade of messages/methods is also important to realize prior to the save cascade ever occuring.

Posted by:

Peter A Donovan

Thursday, May 15, 2008

Uniform Rental Service Employee Paid No Contract

What you need to know about Employee Paid and Negotiated Uniform Rental Programs.

The author Peter A Donovan is not affiliated with any unform rental company now, and was previously employed in the industry for 12 years negotiating rental contracts and speaks from this experience.

For the sake of mathematics, let's assume the ABC Manufacturing Company has 10 employees who pay and contract for uniform rental service, and that ABC will not payroll deduct or manage uniform service for unnamed reasons which could include overhead of management time.

What impact does this have on quality of uniforms, price, and the selection of a uniform rental firm?

To understand, you need to be "in the head" of a uniform rental company.
In a normal situation, where ABC negotiates and signs a contract, here's what happens. The uniform rental plant bidding for the business does this:
Each employee gets an inventory of 11 uniforms: 5 in the locker for M-F, 5 dirty in the plant being cleaned from last week, and 1 on the back of the employee, a "swing" garment.
Uniforms cost money. Let's just say each uniform outfit costs $75, and with 11 to purchase, that comes to $825 - not a trivial amount. They "lay it on the line" with a 3 or 5 year contract at $14.00 per week coming in per employee and give new garments to begin service. Math please! That comes to an income of 14x52 weeks = $728 per year. There is cleaning, employees to pay, trucks to maintain, and gas prices too. The normal new uniform contract takes about 1/2 the contract amount to break even. Let's not even go to "value of money over time". The uniform rental plant is in the business of long term profit and when you renew your contract for another 3 years, there's no huge overhead so there is finally some profit at the end of the tunnel.

Now, when ABC refuses to sign a contract (employees cannot) what does this do?
You have to be the uniform company on this one.
First, let's talk about the "stock room" of uniform rental plants. Every plant has a stock room full of used garments that they decide are good enough to rent but used, so they use them a replacement garments when regular uniforms are destroyed and for employees added to a contract during the contract period. When you have a sizeable stock room bulging with used uniforms, you can go after employee paid no contract accounts. $14 per week per employee still and used uniforms. Wait.

Who has uniform stock rooms bulging? When a uniform company has customers that end contracts, all the uniforms are returned to them. When a uniform company has a low quality control standard for used garments and retains all rather than RAN "replace as needed" you get the perfect mix.

If your customers are happy and don't leave, PLUS you have a high quality RAN system, you just can't bid for the ABC account, can you?

So, the impact of ABC's non-involvement does this:
1. The uniform vendor will be of the type mentioned above most likely.
2. The employees get used and pay for new.
3. AND they impact the image of the ABC company when visitors arrive.

This article is written expressly for reading by the owner of ABC, whomever you may be.

Peter A Donovan
Applause Software

Monday, May 05, 2008

Uniform & Linen Rental Plant Software Launched

A new software product for commercial textile rental plants (uniform & linen rental) will be launched this week from Applause Software of Boston.

Created in 20066, coming to market now, is RoloFlex UL.

A Sales and Marketing contact manager featuring custom proposal generator, email blaster, document management and scanning, market share analysis, targeted lead generation, and salesrep activity monitor, RoloFlex UL will be launched this week with a nationwide telemarketing campaign.

Based on a Visual DataFlex front-end, this product is years in the making and is singly the only PRO application available for the industry specifically.

There are approximately 400 commercial textile plants in the USA specializing in uniform rental and linen rental. The organization that forms the association for these companies is the Uniform Textile Service Association (UTSA) which features a publication and trade shows for the industry.

RoloFlex UL is currently featured on:

Author: Applause Software of Boston: Peter A Donovan

Sunday, April 13, 2008

Microsoft TAPI DIALER with Vista

With the advent of many new things in the Vista OS, there is an important undocumented method for using an application which utilizes the TAPI (Telephone) interface to Vista.

In a microsoft support conversation I had with the MS support team, I suggested the following:

  • Bug: The MS-Dialer in Vista is not backwards compatible with XP.

  • Bug: There is no documentation in Vista on how to use TAPI or the MS Dialer.Exe

  • Bug: The documentation that MS provided does not dial USA phone numbers correctly.

Here's the problem:

If you were to dial in XP, you would dial this: 1 781 555 5555 as an example. This no longer works in Vista, and the output dialed is exactly this: 1 7 555 5555 where 2 digits of the area code is truncated.

If you were to follow the (paid to provide) documentation, you would now dial: +1 781 555 5555 but this results in the following number dialed: 781 555 5555 without the long distance "1".

The Answer:

Short and sweet: You must take the digits previously dialed by XP and add the country code for the USA like this: "+1 17815555555" with an important space after the "+1 ", resulting in the number dialed of 1 781 555 5555

This will be an important new addition to programs (such as RoloFlex from which perform under both operating systems, XP and Vista, so the programmer must identify the OS and adjust the TAPI interface accordingly.

In the hopes of helping someone else with their TAPI interface, so that you don't have to pay Microsoft $59 US to help you discover this....


Peter A Donovan : Applause Software, Boston USA