              AMAZING NEW PRODUCT ANNOUNCEMENT

          How can I make my program run faster?
   How can I make my program use memory more efficiently?
 How can I make my program more maintainable in the future?

                    --IN OTHER WORDS--

     How can I make my program run the best it can?

These are all questions programmers ask when trying to fine
tune their code to run at its optimum.  Unfortunately, the
answer to these questions often requires painstaking hours
eyeballing thousands of lines of code in an attempt to tweak
out better throughput, memory efficiency, or style improvements.

As a substitute for the traditional approach of optimizing a
program manually, Simba Software, Ltd. would like to propose a
different solution...a new, intelligent tool that will help
us all write the best code we can, the first time.

Simba Software, Ltd., newly formed by Rod da Silva and Troy
Henikoff, is pleased to announce its first product designed
specifically for the Clipper market. Code named ThinkTank, this
intelligent code optimizer brings the expertise of Clipper
programmers from around the industry right to your desktop.  It
is the combined brains of the industry's best which will help you
analyze and fine tune your code to its optimum.

Knowing that manually analyzing a large, complex program
requires tremendous effort, eyestrain, and expertise, we have
developed ThinkTank with the vision of automating this process.
ThinkTank can read in all the source code for your application,
break it down into its smallest elements, and run it through an
in-depth analysis based on a user-selected set of optimization "rules" or
"heuristics".

The first version of ThinkTank will come standard
with dozens of built-in heuristics for analyzing code.  So if you would like to
quickly see all the occurrences of dead variables in your code, or
all the places in your program where performance robbing
PRIVATE variables can be safely replaced with LOCAL ones, then
ThinkTank can help right out of the box.  However, since we can't think of
everything you are likely to want to know about your software, we have
made ThinkTank a completely open system, allowing for user defined
heuristics to be entered quickly and easily at any time.

ThinkTank's automatic analysis searches your code for many types
of problems that can prevent an application from running
optimally.  ThinkTank then displays the results in a useful,
interactive format allowing you to quickly see where
improvements can be made and performance improved.  ThinkTank can
even combine sets of heuristics together to provide you with a
succinct, prioritized report of areas in your code where the
suggested changes will have the greatest impact.


WE NEED YOUR HELP TO MAKE THIS HAPPEN

In order to gather the tips and tricks for ThinkTank's first
set of heuristics, we are reaching out to the best and brightest
in the industry...you.  To help make the first version as robust
as possible, please read the following description and share any
rules of thumb you use to tweak better performance, memory
efficiency, maintainability, etc. from your applications once
they are operating.  Contributors whose tips are accepted will become part
of the beta testing team, receive a free copy of the final product,
receive an invitation to the contributor's dinner at Technicon94, and
take pride in the fact they are not only helping their fellow programmers
master their profession, but also doing their part to raise the quality
of code across an entire industry.

Also, please visit us at our Technicon94 booth.  We will be
demonstrating  a beta version of ThinkTank, taking advantage of a
chance to get to know you better, and will even have a caricature artist on
hand to make a unique, personalized souvenir for you just for
coming by.  Don't pass up this opportunity to have some fun and
see a great new product in action!


WHO NEEDS THINKTANK?

We all do.  This tool is designed to help all programmers develop
the best code they can.  Novice programmers, and their trainers,
will find ThinkTank a great tool for learning and teaching all
those "little tricks" for better Clipper programming.  At the
same time, experienced programmers will rely on ThinkTank's
diverse expertise for solving complex problems or fine tuning a
good program into an optimally running system.

Perhaps you are not at the point in your project where you are worried
about fine tuning performance just yet.  For example you may have
just inherited a monstrous application to maintain, and getting familiar with
it presents a big enough challenge for you right now.  Why don't you consider
letting ThinkTank help you see the forest for the trees by documenting for you
the complete structure of the application, allowing you to navigate around
it at will as if it were a completely cross referenced  hypertext file.  There is
no better way to familiarize yourself with someone else's application.
ThinkTank can keep the inordinate number of variables,
operators, functions, etc. categorized and in perspective while
you wade through the code.  Later, you can use ThinkTank to analyze the
code for possible weak points or potential problems in one easy step.

Perhaps you are a manager not so much involved with programming directly,
but more in charge of the project as a whole.  ThinkTank can help you as well,
by providing a consist way in which to measure the quality of your consultant's
code.  You can rely on the expertise embodied in the product as collected from the
corners of the industry to test the code, or you can enter your company's own
specific software quality criteria and test the software for conformance to it.  Or do both, the
choice is yours!

No matter who you are, ThinkTank can help make the task of
understanding and optimizing your program's inner-workings
simpler, more effective, and less time-consuming.


HOW DOES IT WORK?

First, ThinkTank must be able to read your source code.  The
only required input is a list of the .PPO files that constitute
your application.  Since ThinkTank references .PPO files, you
can continue to use all of your custom user defined commands and
preprocessor directives...They will be handled by ThinkTank.

ThinkTank compiles your code into a complete "Knowledge Base".
It actually parses and cross references every syntactical element of your
code and places them into a relational database repository for query and
analysis.  We are talking about every statement, function, constant,
operator, looping or decision construct, expression, etc., Absolutely EVERYTHING!

Once a database representation of your application has been
generated, your code can be analyzed with ThinkTank's deep
diagnostic capability.  In this step, ThinkTank will compare your
application to the set of Clipper code-optimizing heuristics
contributed by programmers from around the industry.  ThinkTank's
functionality even gives you a choice as to which type of
optimization heuristics you want to apply to your code -- speed,
memory usage or even readability.


WHAT ARE THE RESULTS?

In batch mode, you receive reports of the potential areas for
improvement ThinkTank has discovered.  The reports can be
customized to show the suggestions in order of their impact
on your code's performance or in line number order.  Also, you
can run ThinkTank in interactive mode, browsing through your
code and reading the suggestions on-line.  This mode offers
access to detailed information about each heuristic -- who
contributed the applied rule, an example with source code, and
biographical data about the contributor.  ThinkTank can even
sort your report output in order by level of severity.  This is
especially important in a time crunch when you need to focus only
on those improvements that will have the greatest impact on your
application's optimization.


WHAT ARE "EXPERT" HEURISTICS?

ThinkTank's expert heuristics are based on tips, tricks, and
hints from the industry's diverse set of programmers.  The
heuristics range from the general, "PRIVATEs to LOCALs," to the
specific, one-in-a-million rules of thumb so important for
providing real performance improvements to an application.

As a simple example, consider a heuristic that helps identify inefficient
IF..ELSE..ENDIF statements.  When ThinkTank compiles your application it
creates a table called "Constructs" that catalogs every looping and branching
construct in the application.  A heuristic could easily be written that processed this
table looking for every IF...ELSE...ENDIF construct that had the form:

  IF .NOT. <condition>
      ...<code body1>
  ELSE
      ...<code body2>
  ENDIF

All such constructs could be reported as being unnecessarily inefficient.
The report would explain that the above construct' s efficiency could, in
general, be improved by restructuring it to avoid the boolean
negation in the condition as in:

  IF <condition>
     ...<code body2>
  ELSE
     ...<code body1>
  ENDIF

While this might not seem like a big improvement at first glance, the
heuristic could be refined to only report those occurrences which reside
within loops or within functions that are themselves called repeatedly
from within loops.  Its not hard to imagine how dozens and dozens of
little tips and tricks such as this one, applied to countless places in your
code could add up to big savings in execution time.  ThinkTank makes
it easy to automatically locate such patterns in your code that compromise
your applications and keep them from being the best they can be.

The initial release of ThinkTank will contain a base set of
heuristics which include dozens and dozens of heuristics similar to
that above which can identify possible inefficiencies in several areas
of your source code ; - performance, memory usage, maintainability, portability
and readability to name a few.

However, ThinkTank has many other potential uses
than just providing optimization analysis.  Since it is a completely open
system allowing anyone to add new heuristics to it at anytime, it can be
used to answer virtually any question about your source code's structure
that you can dream up!  Perhaps you would like a report on every
place your program performs database i/o?  Perhaps you need to determine
if your program has any functions that recurs?  Maybe you would like
to add a report that will identify everywhere your corporate variable naming
convention is not being adhered to?  How about a report on your declared
classes, (including instance variables and methods) for you Class(y) users?  Or
a report on code that will not be compatible with CA-Visual Objects?

ThinkTank can be programmed to do all this and more, using its built-in
powerful macro language.  Don't worry, we don't make you learn yet
another macro language - we use a subset of CA-Clipper itself.  Simply
define a new report, enter the small program which represents the heuristic to
generate the report using CA-Clipper familiar syntax, compile it and then execute
it to obtain the results, all without ever leaving the ThinkTank environment!

If you can answer a question by manually searching your source code in
a systematic way, then you can automate the process using ThinkTank.
Its possible uses are virtually endless!


WHAT KIND OF INPUT DO YOU WANT FROM ME?

Simba Software, Ltd. needs your help in developing a robust
set of heuristics for the first release of ThinkTank.  Realizing
that every programmer has their own top ten list of tricks for
better code development, it seems to us that everyone has a
bit of expertise to share.


WHY SHOULD I CONTRIBUTE?

The heuristics are very important to the robustness of the
ThinkTank product. Therefore we would like to extend the
following offer to the Clipper programming community:

First, contributors whose ideas are used in ThinkTank will be
invited to beta test the program and become eligible to
receive a free copy of the tool (containing everyone's rules)
when it is completed.

Secondly, all accepted contributors will be able to submit
optional biographical data with their heuristic.  This on-screen
credit gives you, the contributor, the spotlight every time your
rule is applied to a user's code.  You may want to leave a
CompuServe address or even take the opportunity to share some
information about you or your company with the future users of
ThinkTank.  This way, when ThinkTank applies your heuristic to a
user's code, your biographical data will be made available for
their reference and your advertising benefit.

Finally, contributors will be cordially invited to attend ThinkTank's
contributors dinner at Technicon94 in New Orleans.  This will be
a great opportunity for us to meet you and for you to enjoy a
great New Orleans meal while rubbing elbows with some of the best
and brightest in the industry.

Contributing is easy, just fill out the rule template (TTT.TXT)
located in the 3rd Party Demos library (#8) of this forum and send it
to CompuServe address 73612,252.  The form is easy to use and it
takes only a few minutes to complete.  Enter you personal/company
information and a basic english description of your rule of thumb for
better programming, or an idea for a report about your source code
that you would find useful.  If you would like to submit more than one, use
a new template for each, but you need only fill out your name, work phone,
and company name along with the heuristic description information.  Your
biographical information for example need not be entered a second time.

Contributors will be contacted within 14 days to let them know if
the rule has been accepted for ThinkTank or if their heuristic
has already been submitted.   Remember, most of the obvious optimizations
such as the "PRIVATEs to LOCALs" conversion, etc., will have already
be taken care of.  What we really need are those subtle, one-in-a-million tips
or tricks which only apply under very special situations.  You don't have to
be a guru to contribute.  Everybody has some little technique that they have
discovered which improves the quality of their code.  Now is your chance to
share it with the rest of the CA-Clipper community.  Perhaps you can't think
of any specific optimization tips off the top of your head, but have an idea or
two on some useful informational reports you would like to see included with
ThinkTank.  We still haven't figured out all the ways this tool can be used
so if you have an idea please send it to us!

Thanks for your help.  Please be sure to use the ThinkTank template (TTT.TXT)
located in the 3rd Party Demos file library to submit any heuristics
you think should be in the first version of ThinkTank.  This file contains more
information on how ThinkTank works, on how to become a beta tester, and to
beta software availability.  Also, watch this space over the next few days for a
message regarding a technical overview of the product for those of
you interested in finding out more information on how the system has been
implemented.  There are some exciting technologies used to implement this
product and it may interest you to learn more about them.

Your contribution will be the foundation for this tool of tomorrow...where
programmers have industry-wide expertise right at their desktop
to help them write the best code possible...the first time.
