Posted: Wed May 31, 2006 1:29 pm
The following is a comment I emailed to Mr. Steve regarding Dataface. It is a bit long winded however I hope it is useful here for us to all start some conversations regarding the possibilities of dataface. More comments will follow:
Quote (myself):
Mr. Steve,
First, I wish to commend you on your Dataface product. It is very similar to what I have desired in a database development system for years. I have used other programming languages and systems like Cobol, Clarion, MagicPC(ugh..). All back in the DOS days. Most modern programming systems seem to focus on GUI. Certainly OOP programming has made some things easier than in the past. Yet, most programs seem to ignore the fundamental needs of a programming system, data. VB and other like tools concentrate on how to place a button, what the button does, what the properties of the button are. To interact with data the programmer is left on his own, or forced to purchase addons. Worse, most systems that generate code for the programmer as a starting point, have few (if any) code embed points. Thus the programmer must change the code directly. Yet if he returns to the Rad/Case tool or framework, to make a change, and regenerates the code, he must keep track of all the individual changes he made and reinsert them into his code.
Clarion is a system which has thousands of embed points so code regeneration offers no difficulty for a programmer. Also, the entire ARAD of clarion is template based. Which means that if the programmer wishes to change the generated code, he can change the template. And still he has embeds throughout. This also means that Clarion can be used to create programs in other languages. For instance Softvelocity (the maker of Clarion) currently offers templates in not only the Clarion programming language, but also ASP and PHP. Further, like your system Clarion is Data Centric. Since it has been in development for years, it has a myriad of features. For instance in the data dictionary one can define Data Verification constraints, picture elements (how the field is displayed) and so forth. Thus any program that uses a specific data dictionary will automatically have all of the features on every window for a specific table.
There are though many issues I have with Clarion. Firstly, it is STILL a 16bit system. Further, I have emailed their sales people, for questions about the PHP templates, and the Version 7 upgrade (coming this year). And have yet to receive a response. In addition, while the data dictionary is a big help to the programmer, it is not stored in a central repository. Each data dictionary for each project is in a flat? file. (Not text based though). Which means that if I need a particular table layout in a project, I have to import it from another data dictionary. Or simply use the other data dictionary, which means having references to tables that I do not need in my system (though not my generated code...clarion does not generate code for variables and files that are not used in a project).
Now I bring up Clarion for a reason. It is the closest thing on the market now that I am aware of to the type of system I have wanted, until your system came along. Now true enough you are in the beginning stages of your project. When I read your plans for version .6 I could see though that you are right along the same path as I am.
For instance having the settings for a table stored in a table itself. Yet still having the ability to use ini files if one so chose. In addition, you write EXCELLENT documentation. I cannot over-emphasize this. I have yet (until I read your docs) to read the documentation for a programming system of any sort, wherein the projects designers did not obfuscate even the most simple actions in their system. Often explanations of ways to perform things are left unsaid.
In fact just this weekend I had downloaded a program called dbfConvert. It is a php program for converting DBF files to MySQL tables. I ran it several times with his sample dbf files. I had to experiment several times over and over before I finally realized the dbf files had to be in subdirectories of the dbfConvert program. The config file, (his form of documentation) did not make this requirement clear. Yet with your system I was able to set up some tables the first night. I had an excel spreadsheet from one of our clients with a list of persons we are required to contact for them. I imported it into a mysql spreadsheet, ran your system against it, and had a running program. Thus, as I told you in one post already, my boss was impressed.
Currently I work in the shipping department of my company. In a few weeks, they will be hiring a replacement, so that I can concentrate on programming full time. We have an entire system I will be programming as a replacement for the current programs they are using. Eventually it will be a full accounts receivable, accounts payable, payroll, order entry, sales contact manager, system. It will have many options and modules.
I could take several paths. One hand write the code. Two (the one my boss's brother wants me to try), I could download another system as a starting point. Then modify their code to meet our needs. Well you commented very well on the difficulties of doing that. Fortunately my boss and his tech guy (who is a windows networking fella not a programmer) agree with me that this option is the worst. Third I could use a programming system like Clarion, and be disatisfied along the way with the way they SHOULD have done things. Finally, and my choice,is to work with Dataface. Not only using dataface to program our modules, but also working with what I hope will become an entire community of dataface developers as the dataface system grows along the lines that you have spoken.
With all of this in mind I wish to toss out several ideas to you. This is all merely brainstorming on my part. A lot of it is inspired by your Dataface system. Some of it I have thought about for years.
As you know most systems, can be datacentric. Heck even images can be stored in databases. Most programming systems add data as an afterthought. Thus we have had to cludge our way through often. Most data can be accessed the same way. We do not need different routines to read this table than we need to read that table. Thus the reason your system works so well.
Further, the large chore of programming is the repetition. When we have a data spec, we have to enter it somehow. This means creating tables, then adding fields, adding all of the requirements for data validation, data integrity, relationships and so forth. I have noticed that very often these too, are the same. Table specs for contact information rarely change. In our case we have patients to deal with, insurance companies, venders, referrers (who refer patients to us), sales persons etc. Right there are five tables. These five tables most likely follow nearly the same format. Name, Address, State etc. Each table may have a few additional fields which differ from the other tables.
Since this information is always the same, why not place it too in a database? For that matter field information is often the same. Name fields are usually text, often 20, 30 characters long. With fewer data validation requirements than say a phone number. If there is a field information table, then when one crafts a table, the field specs can be pulled from the field information table. If information on the type of field you want to create is not existing yet, then it is added at that time, stored, and ready for retrieval next time. Then as you create a table spec, its Specs are stored in a Table Information table. Thus the table information table, relates to the field information table. (Technically the table information table would have a table information item table for the fields and that table is what actually relates to the field information table).
Since Data relationships are often the same, they too could be stored in a Relationships table. So if I use a particular table, or series of tables, their relationships are already set up.
All of these specs could be uploaded, at the programmers option, to a central, or any number of central, data repositories. Thus if I need to create an order entry system, I could go online, and see what order entry tables and systems are already created. Download those into my data repository and v—ila, in a matter of minutes the base of the system that I need, if not the ENTIRE program, is already written. Then I can add modules as I define later. Or I can download more, modify them, adding fields more tables, relationships etc, to polish my system. Then if I chose, I could return my changes to the repository I got them from, or another repository.
This data centric repository programming system does not have to be related only to tables, fields, relationships etc. It could also be related to programming logic, business logic, business rules, and so forth. We could use it to create a report writer, a query system, data conversion and so forth. Naturally some of these options would be a while down the road. But by having everything stored in a data system, just like any other data, the speed at which we could create any specific project would be drastically increased. As your dataface has already increased it for many already.
I hope these ideas are clear and that you find them interesting. I would like to get your feedback when you have time. I know you are very busy. I would also like put them on the forum, but I wanted your permission first. If you would like to discuss these things on the phone please let me know. I can call any time.
Thank you for your consideration in these matters.
Joseph James Frantz
Personal Contact Information:
(216) 453-0684
boscagarda-dataface6031@yahoo.com
====End Quote====
Quote (myself):
Mr. Steve,
First, I wish to commend you on your Dataface product. It is very similar to what I have desired in a database development system for years. I have used other programming languages and systems like Cobol, Clarion, MagicPC(ugh..). All back in the DOS days. Most modern programming systems seem to focus on GUI. Certainly OOP programming has made some things easier than in the past. Yet, most programs seem to ignore the fundamental needs of a programming system, data. VB and other like tools concentrate on how to place a button, what the button does, what the properties of the button are. To interact with data the programmer is left on his own, or forced to purchase addons. Worse, most systems that generate code for the programmer as a starting point, have few (if any) code embed points. Thus the programmer must change the code directly. Yet if he returns to the Rad/Case tool or framework, to make a change, and regenerates the code, he must keep track of all the individual changes he made and reinsert them into his code.
Clarion is a system which has thousands of embed points so code regeneration offers no difficulty for a programmer. Also, the entire ARAD of clarion is template based. Which means that if the programmer wishes to change the generated code, he can change the template. And still he has embeds throughout. This also means that Clarion can be used to create programs in other languages. For instance Softvelocity (the maker of Clarion) currently offers templates in not only the Clarion programming language, but also ASP and PHP. Further, like your system Clarion is Data Centric. Since it has been in development for years, it has a myriad of features. For instance in the data dictionary one can define Data Verification constraints, picture elements (how the field is displayed) and so forth. Thus any program that uses a specific data dictionary will automatically have all of the features on every window for a specific table.
There are though many issues I have with Clarion. Firstly, it is STILL a 16bit system. Further, I have emailed their sales people, for questions about the PHP templates, and the Version 7 upgrade (coming this year). And have yet to receive a response. In addition, while the data dictionary is a big help to the programmer, it is not stored in a central repository. Each data dictionary for each project is in a flat? file. (Not text based though). Which means that if I need a particular table layout in a project, I have to import it from another data dictionary. Or simply use the other data dictionary, which means having references to tables that I do not need in my system (though not my generated code...clarion does not generate code for variables and files that are not used in a project).
Now I bring up Clarion for a reason. It is the closest thing on the market now that I am aware of to the type of system I have wanted, until your system came along. Now true enough you are in the beginning stages of your project. When I read your plans for version .6 I could see though that you are right along the same path as I am.
For instance having the settings for a table stored in a table itself. Yet still having the ability to use ini files if one so chose. In addition, you write EXCELLENT documentation. I cannot over-emphasize this. I have yet (until I read your docs) to read the documentation for a programming system of any sort, wherein the projects designers did not obfuscate even the most simple actions in their system. Often explanations of ways to perform things are left unsaid.
In fact just this weekend I had downloaded a program called dbfConvert. It is a php program for converting DBF files to MySQL tables. I ran it several times with his sample dbf files. I had to experiment several times over and over before I finally realized the dbf files had to be in subdirectories of the dbfConvert program. The config file, (his form of documentation) did not make this requirement clear. Yet with your system I was able to set up some tables the first night. I had an excel spreadsheet from one of our clients with a list of persons we are required to contact for them. I imported it into a mysql spreadsheet, ran your system against it, and had a running program. Thus, as I told you in one post already, my boss was impressed.
Currently I work in the shipping department of my company. In a few weeks, they will be hiring a replacement, so that I can concentrate on programming full time. We have an entire system I will be programming as a replacement for the current programs they are using. Eventually it will be a full accounts receivable, accounts payable, payroll, order entry, sales contact manager, system. It will have many options and modules.
I could take several paths. One hand write the code. Two (the one my boss's brother wants me to try), I could download another system as a starting point. Then modify their code to meet our needs. Well you commented very well on the difficulties of doing that. Fortunately my boss and his tech guy (who is a windows networking fella not a programmer) agree with me that this option is the worst. Third I could use a programming system like Clarion, and be disatisfied along the way with the way they SHOULD have done things. Finally, and my choice,is to work with Dataface. Not only using dataface to program our modules, but also working with what I hope will become an entire community of dataface developers as the dataface system grows along the lines that you have spoken.
With all of this in mind I wish to toss out several ideas to you. This is all merely brainstorming on my part. A lot of it is inspired by your Dataface system. Some of it I have thought about for years.
As you know most systems, can be datacentric. Heck even images can be stored in databases. Most programming systems add data as an afterthought. Thus we have had to cludge our way through often. Most data can be accessed the same way. We do not need different routines to read this table than we need to read that table. Thus the reason your system works so well.
Further, the large chore of programming is the repetition. When we have a data spec, we have to enter it somehow. This means creating tables, then adding fields, adding all of the requirements for data validation, data integrity, relationships and so forth. I have noticed that very often these too, are the same. Table specs for contact information rarely change. In our case we have patients to deal with, insurance companies, venders, referrers (who refer patients to us), sales persons etc. Right there are five tables. These five tables most likely follow nearly the same format. Name, Address, State etc. Each table may have a few additional fields which differ from the other tables.
Since this information is always the same, why not place it too in a database? For that matter field information is often the same. Name fields are usually text, often 20, 30 characters long. With fewer data validation requirements than say a phone number. If there is a field information table, then when one crafts a table, the field specs can be pulled from the field information table. If information on the type of field you want to create is not existing yet, then it is added at that time, stored, and ready for retrieval next time. Then as you create a table spec, its Specs are stored in a Table Information table. Thus the table information table, relates to the field information table. (Technically the table information table would have a table information item table for the fields and that table is what actually relates to the field information table).
Since Data relationships are often the same, they too could be stored in a Relationships table. So if I use a particular table, or series of tables, their relationships are already set up.
All of these specs could be uploaded, at the programmers option, to a central, or any number of central, data repositories. Thus if I need to create an order entry system, I could go online, and see what order entry tables and systems are already created. Download those into my data repository and v—ila, in a matter of minutes the base of the system that I need, if not the ENTIRE program, is already written. Then I can add modules as I define later. Or I can download more, modify them, adding fields more tables, relationships etc, to polish my system. Then if I chose, I could return my changes to the repository I got them from, or another repository.
This data centric repository programming system does not have to be related only to tables, fields, relationships etc. It could also be related to programming logic, business logic, business rules, and so forth. We could use it to create a report writer, a query system, data conversion and so forth. Naturally some of these options would be a while down the road. But by having everything stored in a data system, just like any other data, the speed at which we could create any specific project would be drastically increased. As your dataface has already increased it for many already.
I hope these ideas are clear and that you find them interesting. I would like to get your feedback when you have time. I know you are very busy. I would also like put them on the forum, but I wanted your permission first. If you would like to discuss these things on the phone please let me know. I can call any time.
Thank you for your consideration in these matters.
Joseph James Frantz
Personal Contact Information:
(216) 453-0684
boscagarda-dataface6031@yahoo.com
====End Quote====