| Login
 Blog    
Notes from Software World

By ashvil on 12/13/2000 7:23 PM

 
IDBA, the first Internet product I designed in 1995 still remains the easiest way to access a database due to the use of declarative programming concepts.

Compared to solutions like JSP, ASP and PHP; IDBA lowers the barriers of entry for connecting the web and databases together. The code is very small and very simple. It\'s very important to understand what made IDBA simple to use.

--- Portions of IDBA readme follows ----

1. Introducing The Intranet Database Assistant
----------------------------------------------

The Intranet Database Assistant allows direct SQL connectivity between your
HTML files and multiple ODBC data sources, with minimal overhead.
IDBA is lightweight making it scalable.

IDBA will fit in comfortably with an environment that scales from a personal
peer computer that needs to display basic database information, through to a
large corporate entity that has complex SQL queries.

Here are some of the Intranet Database Assistant\'s powerful features:

1. It Generates HTML objects dynamically (like Tables and Lists) directly
from your databases, with minimal HTML maintenance. (No CGI involved !)

2. It allows multiple SQL queries within the same HTML page.

3. It allows HTML forms to store data directly to your databases.

4. It allows you to use the Web internally/externally to display HTML
content directly from your databases.

5. It has Unique Fax and Email capabilities that tie in with MS-Exchange.

6. Uses simple notation (no programming) to produce powerful results.


3. Basic Intranet Database Assistant Syntax for HTML:
-----------------------------------------------------

All IDBA Syntax appear as comment tags within HTML pages, so that invalid
database access does not cause URL failures or bad appearances of Information.

An IDBA Query statement in HTML simply looks like this:



Output Formats supported are:
------------------------------

1. TYPE=TABLE - Generates a HTML object filled with data from your query.
2. TYPE=ULIST - Generates a HTML
    object filled with data from your query.
    3. TYPE=OLIST - Generates a HTML
      object filled with data from your query.
      4. TYPE=MENU - Generates a HTML object filled with data from your query.
      5. TYPE=SELECT - Generates a HTML object filled with data from your query.
      6. TYPE=SPREAD - Holds your query results in memory, for future access.
      7. TYPE=MODIFY - Inserts/Updates or Deletes data in your database.

      !!! Please consult IDBA\'s help file for more details on IDBA objects and syntax !!!

      Other IDBA-Specifiers
      =====================

      Error Reporting:
      ----------------

      1. OK=XXX:: Outputs the user specified message \"XXX\" in HTML format
      on success of a database query.

      2. FAIL=XXX:: Outputs the user specified message \"XXX\" in HTML format
      on failure of a database query.

      JUMP(vRelPathAndName) allows a jump to another HTML file, using the vRelPathAndName of that file.

      e.g. FAIL=JUMP(c:HTMLerror.html):: will display error.html if an error in the query occurs

      Accessing data in memory:
      -------------------------

      1. allows you to directly access data as a result of a query which uses
      the type SPREAD.

      row - zero based index into result table (zero will give column headers).
      col - one based index into result table (zero is an illegal value).

      e.g. will access the header for column one and display it in HTML text.

      Substituting Form variables
      ---------------------------

      1. VAR(vName) will substitute the variable name vName with its value, and display it in HTML.
      Where vName=value is received through a POST or GET.

      2. VARQ(vName) does the same as 1. In addition, it adds quotes to the substituted value for queries.
      e.g.: VARQ(vName) where vName=Fred will result in \'Fred\'.

      SPREAD and DATA extensions
      --------------------------

      IDBA 1.5 now includes a .... syntax. This extends the SPREAD and DATA capabilities by
      automatically allowing the iteration of row numbers in a result set from a SPREAD statement. This is
      achieved by using the reserved symbol: ROW_IDX as shown in example (e) below.

      Note: ROW_IDX always starts at row=1 of a result set. To obtain column headers, use the DATA statement
      with row=0.

      Examples:
      =========

      (a) To output everything from a \"Customers\" database table as a HTML table;



      (b) To output the customer name column from a \"Customers\" database table as a HTML list;



      (c) To insert data into an \"Employees\" database table;

      ::SQL=Insert into Employees
      EmployeeID, lastname, firstname
      values
      (25,\'John\',\'Doe\')
      ::TYPE=MODIFY::
      END>

      The above query is not very useful without variables.

      (d) To execute a Stored Procedure (only where supported by the database);

      ::SQL=execute AddEmployee (25,\'John\',\'Doe\')
      ::TYPE=MODIFY::
      END>


      (e) To automatically iterate through a result set in memory;

      specify a normal query statement with the SPREAD type.



      Then to iterate through the result set automatically, specify;


      Customer ID:
      Name:




      Note: ROW_IDX is an IDBA reserved identifier within a VAR() statement.

      Forms And Variables
      -------------------

      As seen in the above examples, a query (especially where user interaction is involved)
      is not very useful without the use of variables. This is where the HTML form
      and the IDBA-VAR tag combine to make a powerful combination.

      Form.htm Action.htm
      |--------------------------| |----------------|
      | | GET/PUT emp_id=2 | |
      | Enter EmployeeID: [ 2 ] |-------------------->| | | | VAR(emp_id) |
      | [Submit][Reset] | | ...::END> |
      | | | |
      |--------------------------| |----------------|


      In the above diagram, a user inputs the variable 2 and selects \"Submit\". This
      variable is passed through to the action.htm URL which contains an IDBA-Query.
      The query is then executed using the variable 2.

      IDBA-Variable specifiers are of the form:

      VAR(VARIABLE_IDENTIFIER)
      VARQ(VARIABLE_IDENTIFIER)

      where VARIABLE_IDENTIFIER is the name of the control on the form page.

      A Form-Action URL Example using variables:
      ------------------------------------------

      Form HTML Page:








      Result Query HTML Page:

      ::SQL=SELECT * From [Sales by Category]
      WHERE CategoryName = VARQ(CategoryNameX)
      ::TYPE=TABLE::END>

       
By ashvil on 12/5/2000 11:52 AM

 
It looks like SOAP will be basis for communication between web services since MS, IBM and Sun are pushing it along with others.

SOAP is a simple RPC mechanism which uses XML. Other poplular RPCs are DCOM from MS, IIOP from the CORBA group and Java RMI from Sun. All of them do the same job. i.e. Allow you to call a remote function on a server like a local function call.

Some articles on SOAP
SOAP: Simple Object Access Protocol
http://www.techmetrix.com/trendmarkers/tmk1200/tmk1200-3.php3

SOAP home page at MS
http://msdn.microsoft.com/soap/default.asp

SOAP for Visual Studio 6.0
http://msdn.microsoft.com/code/sample.asp?url=/msdn-files/027/000/242/msdncompositedoc.xml

Apache SOAP page
http://xml.apache.org/soap/

Right now, SOAP is still in development stage, so it may be a bit too early to develop using it. But we need to pay close attention to this and start working on evaluating it in the near future.

 
By ashvil on 11/28/2000 9:46 PM

 
Take a look at emarker - a very innovative device that does some thing magical.

Lots of people, including me, want to know name of the song playing on the Radio. eMarker enables that and also enables you to buy the song if you wish.

This magic is enabled to simple components integrated. The power of the final service is more then the sum of the individual components.

As Dan Bricklin writes (author of the first spreadsheet VisiCalc)
>In addition to doing the right thing at the right place in the system, we also see that you need to know how to break a problem down into its component parts, and solve each problem in the appropriate way.

I would call this a Next Generation Internet application and this would classify as an innovation.

 
By ashvil on 11/22/2000 6:15 PM

 
If you are building a brand, these articles will help

http://www.raynet.mcmail.com/product/brandfaq.shtml
Introductory article to Branding and talks about What a Brand is composed of.

http://www.brandoctors.com/brandpos.htm
Brand positioning

http://www.brandoctors.com/outside.htm
Thinking outside the box

http://www.jrcanda.com/art_brandmarriage.html
Give Your Brand in Marriage

http://www.brandoctors.com/nine.html
Nine Critical Issues in Managing Brand Equity

http://www.aniota.com/~jwhite/success0.html
10 Commandments of Power Positioning

http://www.brand.com/speach/work.htm
The Relationship of Brand Strategy and Stock Price

 
By ashvil on 11/20/2000 8:52 PM

 
EBay wants to leverage their service lead into the technology front using web services.

 
By ashvil on 10/23/2000 3:24 PM

 
Tim talks about the next generation of the web, the one with semantics.

 
By ashvil on 8/12/2000 9:03 PM

 
I would define it as a set of tools/services that let you communicate and collaborate better with your colleagues. It essentially allows the power of a group to be more that the sum of it\'s members

This is old problem that has been tried to be solved for generations without much success.

Vannover Bush talks about this in his 1945 paper \"As we may think\".

Augmenting Human Intellect: A Conceptual Framework by Douglas Engelbart continued this vision along with Ted Nelson Xanadu project.

Apple\'s Hypercard, Lotus Notes, Taligent, etc. also did some pioneering work in this field but only Tim Berners-Lee WWW had the most major success, but falls far short of his Information Management: A Proposal

 
By ashvil on 8/12/2000 7:19 PM

 
Jon Udell has a good book on this called Practical Internet Groupware.

You can read some sample chapters or listen to his interview.

 
By ashvil on 8/11/2000 4:51 PM

 
Go to the Yale Style guide.

A must read if you want to build a website!

 
By ashvil on 8/6/2000 6:20 PM

 
We have made a major investment in XML and not many folks understand it very well. I hope that this posting with the links help in the understanding. It is very important to understand the role of XML in the next generation Internet.

While you can think of XML as a set of tags in a text file, you would be looking at the one of the legs of the elephant and not view the entire picture. It is the same view as saying C++ and C share very similar syntaxes and are the same, without understanding how Object Oriented programming works and fundamentally changes the approach in programming.

XML is about data. It is a representation of a tree and (using linking) graphs data structures of data elements. While XML can be stored in a text file, it does not have to be.

Let\'s trace the history of computing from a development model standpoint. Each step led to more abstractions.
1. Machine Languages - 01010101 programming
2. Assemby Languages - mov ax, bx
3. High Level Languages - Cobol
4. Procedural Languages - Pascal,C
5. Object Oriented Languages - Small Talk, C++, Java
6. Component Architectures - COM, CORBA, COM+, EJB (Beans), Open Doc
7. Data oriented Architecture - SGML, HTML, XML (XSLT, Xschema, Xlink, etc.)

Please note that 5,6 and 7 are not exclusive. They all solve different problems and all going to be used for building the next generation of systems.

To understand what XML brings to the table, take a look at HTML an application of SGML. All that HTML specifies using tags is what needs to be done. It does not specify how to display bold text on the screen using the tags, it lets the browser know that is needs to make the text bold.

This transfer the intelligence from the HTML file into the browser application that can make the text bold depending on the device is running. On the PC it could draw text in a bold font, a speech browser would use a different voice tone (with emphasis) to render the text.

For more details, Read why HTML is better than Java for User Interface work, thru you could use Java as a language to write the browser.

By adding a layer of abstraction by not specifying how to do things and passing the data only, we can let the application make better judgment on how to do things. It\'s easier and better to tell someone what needs to be done, then how to do it.

So how does XML tell applications what it needs to be done? It Does not. It leaves out the semantics. It concentrates on providing a standard syntax, parser and supporting standards for data interchange. It leaves the semantics to the application to decide what to do with the tags/elements.

Groups of people are building supporting standards on top of XML. The easiest to explain would be SVG, which is a vector graphics specified in a XML format. The SVG browser uses the standard set of XML tools and add the Vector graphics semantics on top that. The SVG files tell the browser what lines have to drawn where but not how to draw them. On Windows, SVG browsers would use MoveTo, LineTo GDI commands, on Java it would the Java 2D API and on the Mac the Mac toolbox API. Again, the application decides how to draw the line; the writer of the SVG file does not care how it is drawn.

This kind of programming model is called declarative programming model. It simplifies the job for the program author. For example, the SVG could be written using a tool like Adobe Illustrator 9 by a graphic designer and would be cross platform on all the SVG browsers.

XML is best suited for describing data for this kind of declarative programming model.

More information on XML and examples can be found with these links

Introduction to XML
http://msdn.microsoft.com/xml/general/intro.asp

XML FAQ
http://www.xml-zone.com/xmlfaq.asp
XML in 10 points
http://www.w3.org/XML/1999/XML-in-10-points
What is XML?
http://www.xml.com/pub/98/10/guide1.html
XML, Java, and the future of the Web
http://metalab.unc.edu/pub/sun-info/standards/xml/why/xmlapps.htm

IBM\'s XML Web Site
http://www.ibm.com/developer/xml/

MSDN Online: XML Developer Center
http://msdn.microsoft.com/workshop/xml/default.asp

The Apache XML Project
http://xml.apache.org

Advanced Links
XML Working draft
http://www.w3.org/TR/2000/WD-xml-2e-20000814

W3C XML home page
http://www.w3.org/XML/

XML Hack
http://www.xmlhack.com/

xmlinfo
http://www.xmlinfo.com

Other XML standards
XSL
http://www.w3.org/Style/XSL/

XML Schema
http://www.w3.org/XML/Schema.html

XML Query
http://www.w3.org/XML/Query.html

DOM
http://www.w3.org/DOM/

XPath and all
http://www.w3.org/XML/Linking.html

 
   
 Print   
 Blog_List    
   
 Print   
 Blog_Archive    
   
 Print   
 Search_Blog    
   
 Print