Bigwig a programming language for developing interactive web services
Download
1 / 112

< bigwig > A Programming Language for Developing Interactive Web Services - PowerPoint PPT Presentation


  • 87 Views
  • Uploaded on

< bigwig > A Programming Language for Developing Interactive Web Services. Claus Brabrand. BRICS , University of Aarhus, Denmark. Plan. Introduction Runtime System Dynamic Documents PowerForms Conclusion. Plan. Introduction Runtime System Dynamic Documents PowerForms Conclusion.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '< bigwig > A Programming Language for Developing Interactive Web Services' - balin


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Bigwig a programming language for developing interactive web services

<bigwig>A Programming Languagefor DevelopingInteractive Web Services

Claus Brabrand

BRICS, University of Aarhus, Denmark

Datalogforeningen <bigwig> December 7, 1999


Bigwig a programming language for developing interactive web services
Plan

  • Introduction

  • Runtime System

  • Dynamic Documents

  • PowerForms

  • Conclusion

Datalogforeningen <bigwig> December 7, 1999


Bigwig a programming language for developing interactive web services
Plan

  • Introduction

  • Runtime System

  • Dynamic Documents

  • PowerForms

  • Conclusion

Datalogforeningen <bigwig> December 7, 1999


What is bigwig
What is <bigwig>?

  • A domain-specific high-level programming language for developing interactive Web services.

HTML

JavaScript

Service

Specification

<bigwig>

CGI

HTTP Auth.

Java Applets

Datalogforeningen <bigwig> December 7, 1999


A collection of dsls
A collection of DSLs

  • C-like skeleton language with

    • Runtime system

    • Concurrency control

    • Database

    • Dynamic documents: DynDoc

    • Input validation language: PowerForms

    • Security

    • Cryptographic security

    • Syntactic-level macros

Datalogforeningen <bigwig> December 7, 1999


A collection of dsls1
A collection of DSLs

  • C-like skeleton language with

    • Runtime system

    • Concurrency control

    • Database

    • Dynamic documents: DynDoc

    • Input validation language: PowerForms

    • Security

    • Cryptographic security

    • Syntactic-level macros

Datalogforeningen <bigwig> December 7, 1999


Dsl vs gpl
DSL vs. GPL

  • DSL ::= Domain Specific Language

  • GPL ::= General Purpose Language

  • DSL?

    • Targeted for specific problem domain

    • Abstraction level match problem domain

  • Examples: Lex/Yacc, LaTeX

Datalogforeningen <bigwig> December 7, 1999


Dsl vs gpl1
DSL vs. GPL

  • DSL ::= Domain Specific Language

  • GPL ::= General Purpose Language

  • DSL?

    • Targeted for specific problem domain

    • Abstraction level match problem domain

  • Examples: Lex/Yacc, LaTeX, <bigwig>

Datalogforeningen <bigwig> December 7, 1999


Dsl advantages
DSL Advantages

…vs. GPL + library

  • Syntax

  • Analysis

  • Implementation

Datalogforeningen <bigwig> December 7, 1999


Goals
Goals

  • Lower development time (= cost):

    • Targeted at Web services

    • Low-level  high-level

  • Increase functionality:

    • Compiler does “the dirty work”

  • Reliability:

    • Catch errors during development

      • Runtime errors  Compile-time errors

  • Datalogforeningen <bigwig> December 7, 1999


    Assumptions
    Assumptions

    • “Rules of engagement”:

      • Lowest common denominator

        • Any browser/Web server combination

      • Only include basic primitives

        • Syntactic macro language does the rest

    Datalogforeningen <bigwig> December 7, 1999


    Target audience
    Target Audience

    • Programmers!

      • No expert Web knowledge required

      • No multiple choice questionnaires or drag’n’drop

    “Reduce Web service development

    to a standard programming task.”

    Datalogforeningen <bigwig> December 7, 1999


    Core language features
    Core Language Features

    • C-like to minimize syntactic burdens

    • Features:

      • Garbage collection

      • Relations, vectors, tuples

      • Strong type checking

    Datalogforeningen <bigwig> December 7, 1999


    People
    People

    • 1x Michael I. Schwartzbach

    • 1x Post Doc.

    • 3x Ph.D. students

    • 2x Programmers

    • 2x Testers

    • 1x External contributor

    Datalogforeningen <bigwig> December 7, 1999


    Bigwig a programming language for developing interactive web services
    Plan

    • Introduction

    • Runtime System

    • Dynamic Documents

    • PowerForms

    • Conclusion

    Datalogforeningen <bigwig> December 7, 1999


    Bigwig a programming language for developing interactive web services
    Plan

    • Introduction

    • Runtime System

    • Dynamic Documents

    • PowerForms

    • Conclusion

    Datalogforeningen <bigwig> December 7, 1999


    3 approaches
    3 Approaches

    Script-centered

    Perl/CGI

    Datalogforeningen <bigwig> December 7, 1999


    3 approaches1
    3 Approaches

    Script-centered

    Perl/CGI

    ASP,

    PHP

    Page-centered

    Datalogforeningen <bigwig> December 7, 1999


    3 approaches2
    3 Approaches

    Script-centered

    Perl/CGI

    ASP,

    PHP

    Page-centered

    Mawl,

    <bigwig>

    Session-centered

    Datalogforeningen <bigwig> December 7, 1999


    Script centered
    Script-Centered

    A script

    A script

    A page

    A page

    A script

    A page

    Datalogforeningen <bigwig> December 7, 1999


    Page centered
    Page-Centered

    A page

    A page

    A page

    Datalogforeningen <bigwig> December 7, 1999


    Page centered1
    Page-Centered

    “Service code embedded in tags and

    interpreted by specialized Web server”

    • Increased level of abstraction

    • Easy to add dynamics to static pages

    • Scalability

    Datalogforeningen <bigwig> December 7, 1999


    Script page centered
    Script / Page-Centered

    • As the service complexity increases:

      • Page-centered  Script-centered

    • Script-centered:

      • default programming, escape printing.

    • Page-centered:

      • default printing, escape programming.

    Datalogforeningen <bigwig> December 7, 1999


    Fundamental problems
    (Fundamental) Problems

    • Interpretation-based:

      • Typically no static checks

      • (Efficiency)

    • Not domain specific:

      • Cannot check Web related issues

    • Implicit control-flow:

      • A service = A collection of scripts/pages!

    Datalogforeningen <bigwig> December 7, 1999


    Language requirements
    Language Requirements

    • Compilation-based:

      • Static checks

      • (Efficiency)

    • Domain specific:

      • Check Web related issues

    • Explicit control-flow:

      • A clear service specification

    Datalogforeningen <bigwig> December 7, 1999


    Session centered
    Session-Centered

    client:

    server:

    N

    show

    show

    N

    Internet

    Datalogforeningen <bigwig> December 7, 1999


    Hello world
    Hello World

    service {

    session Hello() {

    html D = <html>Hello World!</html>;

    show D;

    }

    }

    Datalogforeningen <bigwig> December 7, 1999


    Hello world1
    Hello World

    service {

    session Hello() {

    show <html>Hello World!</html>;

    }

    }

    Datalogforeningen <bigwig> December 7, 1999


    A page counter
    A Page Counter

    service {

    session Access() {

    globalint counter;

    string name;

    show EnterName receive [name=name];

    counter = counter + 1;

    show AccessDoc <[counter = counter];

    }

    }

    Datalogforeningen <bigwig> December 7, 1999


    A page counter1
    A Page Counter

    if (counter == 100) {

    show Congratulations <[name = name];

    counter = 0;

    } else {

    show EnterName receive [name=name];

    }

    Datalogforeningen <bigwig> December 7, 1999


    Cgi shortcomings
    CGI Shortcomings

    • Stateless protocol

      • Session model requires state

    • No bookmarking

      • CGI, not HTML URL

    • Back-button problem

      • “Step-back-in-time” does not make sense

    Datalogforeningen <bigwig> December 7, 1999


    Cgi shortcomings1
    CGI Shortcomings

    • Stateless protocol

    • No bookmarking

    • Back-button problem

    Datalogforeningen <bigwig> December 7, 1999


    Cgi shortcomings2
    CGI Shortcomings

    • Stateless protocol

    • No bookmarking

    • Back-button problem

    Datalogforeningen <bigwig> December 7, 1999


    Components
    Components

    client

    CGI

    HTML

    Internet

    HTTP server

    CGI

    HTML

    restore ;

    compute ;

    save

    program

    database

    Datalogforeningen <bigwig> December 7, 1999


    Adding a connector
    Adding a ”Connector”

    client

    CGI

    HTML

    Internet

    HTTP server

    CGI

    HTML

    redirect

    connector

    CGI

    HTML

    restore ;

    compute ;

    save

    program

    database

    Datalogforeningen <bigwig> December 7, 1999


    Cgi shortcomings3
    CGI Shortcomings

    • Stateless protocol

    • No bookmarking

    • Back-button problem

    Datalogforeningen <bigwig> December 7, 1999


    Cgi shortcomings4
    CGI Shortcomings

    • Stateless protocol

    • No bookmarking

    • Back-button problem

    Datalogforeningen <bigwig> December 7, 1999


    Components1
    Components

    client

    CGI

    HTML

    Internet

    HTTP server

    CGI

    HTML

    connector

    CGI

    HTML

    program

    database

    Datalogforeningen <bigwig> December 7, 1999


    Adding an html reply file
    Adding an HTML “Reply File”

    client

    CGI

    jump

    Internet

    HTTP server

    CGI

    jump

    connector

    CGI

    done!

    HTML

    reply

    file

    program

    HTML

    database

    Datalogforeningen <bigwig> December 7, 1999


    Cgi shortcomings5
    CGI Shortcomings

    • Stateless protocol

    • No bookmarking

    • Back-button problem

    Datalogforeningen <bigwig> December 7, 1999


    Cgi shortcomings6
    CGI Shortcomings

    • Stateless protocol

    • No bookmarking

    • Back-button problem

    Datalogforeningen <bigwig> December 7, 1999


    Components2
    Components

    client

    CGI

    jump

    Internet

    HTTP server

    CGI

    jump

    connector

    CGI

    done!

    HTML

    reply

    file

    program

    HTML

    database

    Datalogforeningen <bigwig> December 7, 1999


    Components3
    Components

    client

    CGI

    jump

    Internet

    HTTP server

    CGI

    jump

    connector

    same URL

    CGI

    done!

    HTML

    reply

    file

    program

    HTML

    database

    Datalogforeningen <bigwig> December 7, 1999


    Cgi shortcomings7
    CGI Shortcomings

    • Stateless protocol

    • No bookmarking

    • Back-button problem

    Datalogforeningen <bigwig> December 7, 1999


    Additional problems
    Additional Problems

    Datalogforeningen <bigwig> December 7, 1999


    Additional problems1
    Additional Problems

    Datalogforeningen <bigwig> December 7, 1999


    What is going on
    What is going on?

    • Error?

      • Package Lost, Service Crash, Connection down?

    • Ok?

      • Searching Database, Long Computation, Waiting for a Resource?

    • Would like to explain delays:

      • “searching database, please wait...”

    Datalogforeningen <bigwig> December 7, 1999


    Components4
    Components

    client

    CGI

    jump

    Internet

    HTTP server

    CGI

    jump

    connector

    CGI

    done!

    HTML

    reply

    file

    program

    HTML

    database

    Datalogforeningen <bigwig> December 7, 1999


    Adding a connector timeout
    Adding a Connector Timeout

    client

    CGI

    jump

    Internet

    HTTP server

    CGI

    jump

    connector

    Timeout

    CGI

    done

    HTML

    reply

    file

    program

    update

    database

    Datalogforeningen <bigwig> December 7, 1999


    Concurrency control
    Concurrency Control

    • Problem: Parallel service processes.

      • Access shared resources.

      • Require synchronization.

    • Solution:

      • Specification of checkpoints & constraints

      • Synthesize centralized safety controller

        • Ensures that service obeys constraints.

    Datalogforeningen <bigwig> December 7, 1999


    Components5
    Components

    client

    CGI

    jump

    Internet

    HTTP server

    CGI

    jump

    connector

    Timeout

    CGI

    done

    HTML

    reply

    file

    program

    update

    database

    Datalogforeningen <bigwig> December 7, 1999


    Adding a safety controller
    Adding a Safety Controller

    client

    CGI

    jump

    Internet

    HTTP server

    CGI

    jump

    connector

    Timeout

    CGI

    done

    wait

    HTML

    reply

    file

    controller

    program

    update

    pass

    database

    Datalogforeningen <bigwig> December 7, 1999


    Concurrency control1
    Concurrency Control

    counter = counter + 1;

    Datalogforeningen <bigwig> December 7, 1999


    Concurrency control2
    Concurrency Control

    wait A;

    counter = counter + 1;

    wait B;

    Datalogforeningen <bigwig> December 7, 1999


    Concurrency control3
    Concurrency Control

    t,t’’: A(t)  A(t’’)  t’: t<t’<t’’  B(t’)

    wait A;

    counter = counter + 1;

    wait B;

    Datalogforeningen <bigwig> December 7, 1999


    A page counter2
    A Page Counter

    service {

    session Access() {

    globalint counter;

    counter = counter + 1;

    }

    }

    Datalogforeningen <bigwig> December 7, 1999


    A page counter with macros
    A Page Counter (with Macros)

    service {

    session Access() {

    regionglobalint counter;

    exclusive (counter) {

    counter = counter + 1;

    }

    }

    }

    Datalogforeningen <bigwig> December 7, 1999


    Demo example mutex
    Demo Example: Mutex

    int i;

    bool quit;

    while (!quit) {

    flash WaitToEnterDoc;

    wait A;

    show DocA <[no=i] receive [quit = quit];

    i++;

    }

    show GoodByeDoc;

    Datalogforeningen <bigwig> December 7, 1999


    Runtime system
    Runtime System

    • Availability:

      • In <bigwig> compiler and

      • As stand-alone package

    Datalogforeningen <bigwig> December 7, 1999


    Bigwig a programming language for developing interactive web services
    Plan

    • Introduction

    • Runtime System

    • Dynamic Documents

    • PowerForms

    • Conclusion

    Datalogforeningen <bigwig> December 7, 1999


    Bigwig a programming language for developing interactive web services
    Plan

    • Introduction

    • Runtime System

    • Dynamic Documents

    • PowerForms

    • Conclusion

    Datalogforeningen <bigwig> December 7, 1999


    Documents
    Documents

    • Traditionally: printf / <% print(...) %>

    • Problems:

      • Only linear construction

      • Programmer/Designer tasks not separated

      • No Show/Receive correspondence

      • Legal/sensible HTML generated?

    Datalogforeningen <bigwig> December 7, 1999


    Documents1
    Documents

    • Traditionally: printf / <% print(...) %>

    • Problems:

      • Only linear construction

      • Programmer/Designer tasks not separated

      • No Show/Receive correspondence

      • Legal/sensible HTML generated?

    Datalogforeningen <bigwig> December 7, 1999


    Our solution document templates
    Our Solution: Document Templates

    • HTML  HTML with named gaps

    • ...gaps plugged at runtime.

    <html>

    <body bgcolor=[bgcolor]>

    <h1>Hello <[what]>!</h1>

    </body>

    </html>

    Datalogforeningen <bigwig> December 7, 1999


    Dynamic documents
    Dynamic Documents

    • Domain specific type: html (with gaps)

      • type::= int | float | string | ... | html

    • Domain specific (sub)language: DynDoc

      • exp ::= ... | c | id | id = exp | exp <[id = exp]

      • stm ::= ... | showexp; |showexpreceive [ id = id ];

    Datalogforeningen <bigwig> December 7, 1999


    Bigwig a programming language for developing interactive web services
    Plug

    • Syntax:

      • exp ::= exp <[id = exp]

    • Semantics:

    Datalogforeningen <bigwig> December 7, 1999


    Show show receive
    Show / Show-Receive

    • Syntax:

      • stm ::= showexp; |showexpreceive [ id = id ];

    • Semantics:

    show

    N

    show

    receive

    Datalogforeningen <bigwig> December 7, 1999


    Hello world revisited
    Hello World (revisited)

    session Hello() {

    html H;

    html D = <html>Hello <[what]>!</html>;

    H = D <[what = “World”];

    show H;

    }

    Datalogforeningen <bigwig> December 7, 1999


    Example enterdata
    Example: EnterData

    string name, email;

    html Input = <html>

    name: <input name=“your_name”>

    email: <input name=“your_email”>

    </html>;

    show Input receive [name = your_name,

    email = your_email];

    Datalogforeningen <bigwig> December 7, 1999


    Rec example genealogy
    Rec. Example: Genealogy

    html GenDoc = <html><ul><li>...</ul></html>;

    html genTree(int n, string s) {

    if (n == 0) return <html></html>;

    elsereturn GenDoc <[mother = s + “mother”,

    mothers_tree = genTree(n-1, “mother’s”),

    father = s + “father”,

    father_tree = genTree(n-1, “father’s”)];

    }

    Datalogforeningen <bigwig> December 7, 1999


    Documents2
    Documents

    • Problems:

      • Only linear construction

      • Programmer/Designer tasks not separated

      • No Show/Receive correspondence

      • Legal/sensible HTML generated?

    Datalogforeningen <bigwig> December 7, 1999


    Documents3
    Documents

    • Problems:

      • Only linear construction 

      • Programmer/Designer tasks not separated

      • No Show/Receive correspondence

      • Legal/sensible HTML generated?

    Datalogforeningen <bigwig> December 7, 1999


    Documents4
    Documents

    • Problems:

      • Only linear construction 

      • Programmer/Designer tasks not separated 

      • No Show/Receive correspondence

      • Legal/sensible HTML generated?

    Datalogforeningen <bigwig> December 7, 1999


    Documents5
    Documents

    • Problems:

      • Only linear construction 

      • Programmer/Designer tasks not separated 

      • No Show/Receive correspondence

      • Legal/sensible HTML generated?

    Datalogforeningen <bigwig> December 7, 1999


    Static guarantees
    Static Guarantees?

    • Documents Well-formed:

      • Two gaps with same name?

      • Field consistency?

  • Plug operation:

    • Gap present?

    • Well-defined gap/field union?

  • Show/Receive correspondence:

    • All fields received?

    • Receive types match?

  • Datalogforeningen <bigwig> December 7, 1999


    Domain specific analysis
    Domain Specific Analysis

    • Interprocedural data-flow analysis:

      • Infer exact types of all documents in program: (gaps, fields).

      • check:

        • documents well-formed

        • plug operations

        • show/receive correspondence

    Datalogforeningen <bigwig> December 7, 1999


    Highly domain specific
    Highly Domain Specific

    Field

    Lattice:

    error

    checkbox

    rel(F ) ... rel(F )

    1

    n

    ordinary

    radio

    checkbox1

    nofield

    tup(F ) ... tup(F )

    1

    n

    Datalogforeningen <bigwig> December 7, 1999


    Documents6
    Documents

    • Problems:

      • Only linear construction 

      • Programmer/Designer tasks not separated 

      • No Show/Receive correspondence

      • Legal/sensible HTML generated?

    Datalogforeningen <bigwig> December 7, 1999


    Documents7
    Documents

    • Problems:

      • Only linear construction 

      • Programmer/Designer tasks not separated 

      • No Show/Receive correspondence 

      • Legal/sensible HTML generated?

    Datalogforeningen <bigwig> December 7, 1999


    Documents8
    Documents

    • Problems:

      • Only linear construction 

      • Programmer/Designer tasks not separated 

      • No Show/Receive correspondence 

      • Legal/sensible HTML generated? ( )

    Datalogforeningen <bigwig> December 7, 1999


    Future plan
    Future Plan

    • Analyze generated HTML documents

      • with respect to:

        • HTML 3.0 / 4.0 / ...

        • DTD / DSD / ...

    • Ensure that only “legal” documents are generated

    Datalogforeningen <bigwig> December 7, 1999


    Bigwig a programming language for developing interactive web services
    Plan

    • Introduction

    • Runtime System

    • Dynamic Documents

    • PowerForms

    • Conclusion

    Datalogforeningen <bigwig> December 7, 1999


    Bigwig a programming language for developing interactive web services
    Plan

    • Introduction

    • Runtime System

    • Dynamic Documents

    • PowerForms

    • Conclusion

    Datalogforeningen <bigwig> December 7, 1999


    Server side input validation
    Server-side Input Validation

    send

    N

    submit

    validate 

    re-send

    N

    re-submit

    re-validate ;compute...

    Datalogforeningen <bigwig> December 7, 1999


    Drawbacks
    Drawbacks

    • It takes time

    • Excess network traffic

    • Requires explicit programming

      • Affects all parties involved:

        • client

        • server

        • programmer

    Datalogforeningen <bigwig> December 7, 1999


    Client side input validation
    Client-side Input Validation

    send

    N

    validate

    submit

    (validate );

    compute...

    Datalogforeningen <bigwig> December 7, 1999


    Drawbacks1
    Drawbacks

    • It takes time

    • Excess network traffic

    • Requires explicit programming

    Datalogforeningen <bigwig> December 7, 1999


    Drawbacks2
    Drawbacks

    • It takes time 

    • Excess network traffic

    • Requires explicit programming

    Datalogforeningen <bigwig> December 7, 1999


    Drawbacks3
    Drawbacks

    • It takes time 

    • Excess network traffic 

    • Requires explicit programming

    Datalogforeningen <bigwig> December 7, 1999


    Drawbacks4
    Drawbacks

    • It takes time 

    • Excess network traffic 

    • Requires explicit programming:

      • re-showing of pages

      • actual validation

    Datalogforeningen <bigwig> December 7, 1999


    Drawbacks5
    Drawbacks

    • It takes time 

    • Excess network traffic 

    • Requires explicit programming:

      • re-showing of pages 

      • actual validation

    Datalogforeningen <bigwig> December 7, 1999


    Drawbacks6
    Drawbacks

    • It takes time 

    • Excess network traffic 

    • Requires explicit programming:

      • re-showing of pages 

      • actual validation 

    Datalogforeningen <bigwig> December 7, 1999


    Drawbacks7
    Drawbacks

    • It takes time 

    • Excess network traffic 

    • Requires explicit programming:

      • re-showing of pages 

      • actual validation 

    • Client, server: 

    • Programmer: 

    Datalogforeningen <bigwig> December 7, 1999


    Obvious language javascript
    Obvious Language: JavaScript

    • Why avoid JavaScript?:

      • GPL for very specific task

      • Operational form

      • Diverging Browser Implementations:

        • Netscape vs. Explorer

    Datalogforeningen <bigwig> December 7, 1999


    Our solution powerforms
    Our Solution: PowerForms

    • Domain specific language:

      • targeted uniquely for input validation

    • Declarative nature (regexps):

      • abstracts away operational details

    Declarative

    Specification

    JavaScript

    (subset)

    PowerForms

    Datalogforeningen <bigwig> December 7, 1999


    Syntax
    Syntax

    • decl ::= formatid = regexp ;

    • regexp ::= id | stringconst | union ( regexp* ) | concat ( regexp* ) | star ( regexp ) | ...

    <input type=“text” name=“N” format=“F”>

    Datalogforeningen <bigwig> December 7, 1999


    Example email format
    Example: Email Format

    format Alpha = union(range(‘a’,’z’),range(‘A’,’Z’));

    format Word = ...;

    format Email = concat(Word,“@”,Word,

    star(“.”,Word));

    Datalogforeningen <bigwig> December 7, 1999


    Example enterdata revisited
    Example: EnterData (revisited)

    html Input = <html>

    name: <input name=“name”>

    email: <input name=“email”>

    </html>;

    show Input receive [name=name,email=email];

    Datalogforeningen <bigwig> December 7, 1999


    Example enterdata revisited1
    Example: EnterData (revisited)

    format Email = ...;

    html Input = <html>

    name: <input name=“name”>

    email: <input name=“email” format=“Email”>

    </html>;

    show Input receive [name=name,email=email];

    Datalogforeningen <bigwig> December 7, 1999


    Field interdependency
    Field Interdependency

    ...usually only handled on server-side

    Datalogforeningen <bigwig> December 7, 1999


    Powerforms also
    PowerForms (also)

    • Extend (declarative specification):

      • formats depend on values of other fields

      • Update accordingly (fixed-point process):

        • text / password: status icons updated

        • radio / checkbox: illegal options deselected

        • select: illegal options filtered (and deselected)

    Datalogforeningen <bigwig> December 7, 1999


    Example demos
    Example Demos

    ...speak for themselves...

    • “Spouse”

      • Basic interdependency

  • “Vowels and Consonants”

    • Select filtering

  • “NYC Office”

    • Complex interdependency

  • Datalogforeningen <bigwig> December 7, 1999


    Applets integration
    Applets Integration

    “Treat applets as regular input fields”

    Java:

    (PowerForms) HTML:

    PowerApplet

    <applet code=“SlideBar.class”>

    <param name=“low” value=“32”>

    <param name=“high” value=“212”>

    <result name=“choice”>

    </applet>

    SlideBar

    Datalogforeningen <bigwig> December 7, 1999


    Powerforms stand alone tool
    PowerForms: Stand-alone Tool

    HTML

    HTML

    PowerForms

    XML

    regexp formats

    JavaScript

    (subset)

    Datalogforeningen <bigwig> December 7, 1999


    Bigwig a programming language for developing interactive web services
    Plan

    • Introduction

    • Runtime System

    • Dynamic Documents

    • PowerForms

    • Conclusion

    Datalogforeningen <bigwig> December 7, 1999


    Bigwig a programming language for developing interactive web services
    Plan

    • Introduction

    • Runtime System

    • Dynamic Documents

    • PowerForms

    • Conclusion

    Datalogforeningen <bigwig> December 7, 1999


    Bigwig publications
    <bigwig> Publications

    • <bigwig>...submitted

      • Runtime System WWW 8, Toronto

      • Concurrency Control FASE’98, Lisbon

      • Database (IPL’92)

      • Dynamic Documents POPL’00, Boston

      • PowerForms ...submitted

      • Macros ...underway

    • Planned:

      • Security / Cryptographic security / Workflow

    Datalogforeningen <bigwig> December 7, 1999


    Professional tool
    Professional Tool

    • BUT,

      • Also a research project

    • Not (yet) ideal for:

      • Heavy access

        • Runtime system: CGI  Spec. Web Server

      • Huge datasets

        • External database

    Datalogforeningen <bigwig> December 7, 1999


    Availability
    Availability?

    • <bigwig>: 1.5 MB C source

      • for UNIX/Linux

    • Also as stand-alone packages:

      • Runtime System

      • PowerForms

  • License?

    • “Almost do what you want”

  • Datalogforeningen <bigwig> December 7, 1999


    Bigwig a programming language for developing interactive web services
    YOU:

    • Free interesting tool

      • Use all of <bigwig>or

      • Use stand-alone packages

        • Runtime System

        • PowerForms

    • Look out for future developments

    Datalogforeningen <bigwig> December 7, 1999


    Bigwig a programming language for developing interactive web services
    US:

    • Feedback

    • New ideas

    • Spread the word!

    Datalogforeningen <bigwig> December 7, 1999


    What is bigwig1
    What is <bigwig>?

    • Runtime System

    • Concurrency Control

    • Database

    • Dynamic Documents

    • PowerForms

    • Security / Cryptographic security

    • Syntactic-level Macros

    http://www.brics.dk/bigwig/

    Datalogforeningen <bigwig> December 7, 1999