SlideShare a Scribd company logo
1 of 17
Download to read offline
Roadmap

         ß Introduction
         ß Seaside Web Applications
               ß Example: Insurance Application
               ß Server Management Interface
         ß ROE
               ß Smalltalk Relational DB Access



Adrian Lienhard & Lukas Renggli, August 2003         Slide 1
Introduction


         ß netstyle.ch founded in 2000
         ß Startup specialized in developing
           Web-Applications
         ß Team of ~6 people (most parttime)




Adrian Lienhard & Lukas Renggli, August 2003        Slide 2
Seaside Web-Application
         ß Sophisticated framework in Squeak
         ß Server setup:
                                 Component Component
                                    Seaside
                                Comanche / Swazoo
                                                         Static files
                                          Apache
                                               http(s)
                                        Web-client


Adrian Lienhard & Lukas Renggli, August 2003                            Slide 3
Example
         ß Domain: Health Insurance
         ß Specialized little company with
           agencies
         ß Application: Extranet for...
               ß creating and manageing offers (with
                 printing/pdf)
               ß process of accepting new policies
               ß management of existing customers with
                 document-management
               ß billing for agencies
Adrian Lienhard & Lukas Renggli, August 2003             Slide 4
Screenshots




Adrian Lienhard & Lukas Renggli, August 2003        Slide 5
Adrian Lienhard & Lukas Renggli, August 2003   Slide 6
Adrian Lienhard & Lukas Renggli, August 2003   Slide 7
Adrian Lienhard & Lukas Renggli, August 2003   Slide 8
Adrian Lienhard & Lukas Renggli, August 2003   Slide 9
ROE

         ß Generic DB access using Smalltalk
         ß Automatically generated SQL

         ß Implementation by Avi Bryant
         ß Extended while developing insurance
           application


Adrian Lienhard & Lukas Renggli, August 2003         Slide 10
Example: Create Table
         person := factory relation: ‘person’.
         person
               create;
               addColumn: #id withType: #int;
               addColumn: #name withType : #text.




         CREATE TABLE person ();
         ALTER TABLE person ADD COLUMN “id” INT;
         ALTER TABLE person ADD COLUMN “name” TEXT;

Adrian Lienhard & Lukas Renggli, August 2003          Slide 11
Simple Example
         query := person where: [ :id :name |
           id > 200 & (name like: ‘avi%’) ].
         query := query project: #id.
         query do: [ :row |
           …]



         SELECT "id" FROM
              (SELECT * FROM (SELECT * FROM person)
              WHERE ("id">200) AND ("name" LIKE 'avi%'))


Adrian Lienhard & Lukas Renggli, August 2003               Slide 12
Class Diagram
                                               Collection
                                        1                      1
                                               Relation

                                                               Transform
                                                     1                               2
                                                          Unary        Binary
                                                            Project        Join
               Concrete                                     Select      Intersect
                                                             Alias     Difference
        Array              Postgres                         Order          Union
                                                            Distinct
                                                              …
Adrian Lienhard & Lukas Renggli, August 2003                                        Slide 13
Advanced Example
         relation := PLPerson relation where: [ :lastname |
            lastname like: ‘%’ , self searchName , ‘%’ ignoreCase: true ].
         relation := relation project: #familyid.

         relation := relation * PLPersistentVersionHolder relation.
         relation := relation whereEqual: #(versionid familyid).
         relation := relation project: #holderid.

         relation := relation * PLInternetOffer relation.
         relation := relation whereEqual: #(holderid id).

         relation := self applyVisibilityRules: relation.
         relation := relation project: #id.
         relation := relation distinct.

Adrian Lienhard & Lukas Renggli, August 2003                                 Slide 14
Algebraic Representation

         P[id](S[(holderid=id)](P[holderid]
           (S[(versionid=familyid)](P[familyid]
           (S[(lastnameilike'%avi%')]
           (table_person)) X
           table_version_holder)) X
           table_internetoffer))



Adrian Lienhard & Lukas Renggli, August 2003      Slide 15
SQL Query
         SELECT DISTINCT * FROM
           (SELECT "id" FROM (SELECT * FROM
           (SELECT * FROM (SELECT "holderid" FROM
           (SELECT * FROM (SELECT * FROM (SELECT
           "familyid" FROM (SELECT * FROM (SELECT
           * FROM table_person) WHERE ("lastname"
           ILIKE '%avi%'))), (SELECT * FROM
           table_version_holder)) WHERE
           ("versionid"="familyid"))), (SELECT * FROM
           table_internetoffer)) WHERE
           ("holderid"="id")))

Adrian Lienhard & Lukas Renggli, August 2003            Slide 16
Transaction Example
        factory transaction: [
           users add: #(id name) values: #(1 avi).
           users add: #(id name) values: #(2 adi).
           “other updates, queries, …” ]




         BEGIN;
              INSERT INTO users (id, name) VALUES (1, ‘avi’);
              INSERT INTO users (id, name) VALUES (2, ‘adi);
              …
         ROLLBACK;
         COMMIT;

Adrian Lienhard & Lukas Renggli, August 2003                    Slide 17

More Related Content

Similar to Squeak at NetStyle

Introduction to PySpark
Introduction to PySparkIntroduction to PySpark
Introduction to PySparkRussell Jurney
 
Semantic Web Standards and the Variety “V” of Big Data
Semantic Web Standards and  the Variety “V” of Big DataSemantic Web Standards and  the Variety “V” of Big Data
Semantic Web Standards and the Variety “V” of Big Databobdc
 
Semantic Web Technologies for Automatic Service Composition
Semantic Web Technologies for Automatic Service CompositionSemantic Web Technologies for Automatic Service Composition
Semantic Web Technologies for Automatic Service CompositionDragan Gasevic
 
Social Network Analysis in Your Problem Domain
Social Network Analysis in Your Problem DomainSocial Network Analysis in Your Problem Domain
Social Network Analysis in Your Problem DomainRussell Jurney
 
Impressive Slideshow without Presentation Software
Impressive Slideshow without Presentation SoftwareImpressive Slideshow without Presentation Software
Impressive Slideshow without Presentation Softwarekmaeda
 
Building nTier Applications with Entity Framework Services
Building nTier Applications with Entity Framework ServicesBuilding nTier Applications with Entity Framework Services
Building nTier Applications with Entity Framework ServicesDavid McCarter
 
NGRX Apps in Depth
NGRX Apps in DepthNGRX Apps in Depth
NGRX Apps in DepthTrayan Iliev
 
An R shiny demo for IDA MOOC facilitation, Developing Data Products
An R shiny demo for IDA MOOC facilitation, Developing Data ProductsAn R shiny demo for IDA MOOC facilitation, Developing Data Products
An R shiny demo for IDA MOOC facilitation, Developing Data ProductsWei Zhong Toh
 
Comments on Simulations Watch Case Part I.pdf
Comments on  Simulations Watch Case Part I.pdfComments on  Simulations Watch Case Part I.pdf
Comments on Simulations Watch Case Part I.pdfBrij Consulting, LLC
 
Hrd685 presentation interesting version
Hrd685 presentation interesting versionHrd685 presentation interesting version
Hrd685 presentation interesting versionChad Chae
 
Applying large scale text analytics with graph databases
Applying large scale text analytics with graph databasesApplying large scale text analytics with graph databases
Applying large scale text analytics with graph databasesData Ninja API
 
Comparative Analysis of DCT and DWT based novel methods for Watermarking
Comparative Analysis of DCT and DWT based novel methods for WatermarkingComparative Analysis of DCT and DWT based novel methods for Watermarking
Comparative Analysis of DCT and DWT based novel methods for WatermarkingIRJET Journal
 
IRJET-Comparative Analysis of DCT and DWT based novel methods for Watermarking
IRJET-Comparative Analysis of DCT and DWT based novel methods for WatermarkingIRJET-Comparative Analysis of DCT and DWT based novel methods for Watermarking
IRJET-Comparative Analysis of DCT and DWT based novel methods for WatermarkingIRJET Journal
 
SEASR-Meandre Architecture Ws Jan 2009
SEASR-Meandre Architecture Ws Jan 2009SEASR-Meandre Architecture Ws Jan 2009
SEASR-Meandre Architecture Ws Jan 2009Loretta Auvil
 

Similar to Squeak at NetStyle (20)

Building REST and Hypermedia APIs with PHP
Building REST and Hypermedia APIs with PHPBuilding REST and Hypermedia APIs with PHP
Building REST and Hypermedia APIs with PHP
 
Introduction to PySpark
Introduction to PySparkIntroduction to PySpark
Introduction to PySpark
 
User Experience Custom Closet v1
User Experience Custom Closet v1User Experience Custom Closet v1
User Experience Custom Closet v1
 
Semantic Web Standards and the Variety “V” of Big Data
Semantic Web Standards and  the Variety “V” of Big DataSemantic Web Standards and  the Variety “V” of Big Data
Semantic Web Standards and the Variety “V” of Big Data
 
Semantic Web Technologies for Automatic Service Composition
Semantic Web Technologies for Automatic Service CompositionSemantic Web Technologies for Automatic Service Composition
Semantic Web Technologies for Automatic Service Composition
 
Node Summit 2012
Node Summit 2012Node Summit 2012
Node Summit 2012
 
Social Network Analysis in Your Problem Domain
Social Network Analysis in Your Problem DomainSocial Network Analysis in Your Problem Domain
Social Network Analysis in Your Problem Domain
 
Where is the World is my Open Government Data?
Where is the World is my Open Government Data?Where is the World is my Open Government Data?
Where is the World is my Open Government Data?
 
Impressive Slideshow without Presentation Software
Impressive Slideshow without Presentation SoftwareImpressive Slideshow without Presentation Software
Impressive Slideshow without Presentation Software
 
Building nTier Applications with Entity Framework Services
Building nTier Applications with Entity Framework ServicesBuilding nTier Applications with Entity Framework Services
Building nTier Applications with Entity Framework Services
 
NGRX Apps in Depth
NGRX Apps in DepthNGRX Apps in Depth
NGRX Apps in Depth
 
Innovations in Intake - Ohio 11 21 2008
Innovations in Intake - Ohio 11 21 2008Innovations in Intake - Ohio 11 21 2008
Innovations in Intake - Ohio 11 21 2008
 
An R shiny demo for IDA MOOC facilitation, Developing Data Products
An R shiny demo for IDA MOOC facilitation, Developing Data ProductsAn R shiny demo for IDA MOOC facilitation, Developing Data Products
An R shiny demo for IDA MOOC facilitation, Developing Data Products
 
Comments on Simulations Watch Case Part I.pdf
Comments on  Simulations Watch Case Part I.pdfComments on  Simulations Watch Case Part I.pdf
Comments on Simulations Watch Case Part I.pdf
 
Hrd685 presentation interesting version
Hrd685 presentation interesting versionHrd685 presentation interesting version
Hrd685 presentation interesting version
 
Applying large scale text analytics with graph databases
Applying large scale text analytics with graph databasesApplying large scale text analytics with graph databases
Applying large scale text analytics with graph databases
 
Comparative Analysis of DCT and DWT based novel methods for Watermarking
Comparative Analysis of DCT and DWT based novel methods for WatermarkingComparative Analysis of DCT and DWT based novel methods for Watermarking
Comparative Analysis of DCT and DWT based novel methods for Watermarking
 
IRJET-Comparative Analysis of DCT and DWT based novel methods for Watermarking
IRJET-Comparative Analysis of DCT and DWT based novel methods for WatermarkingIRJET-Comparative Analysis of DCT and DWT based novel methods for Watermarking
IRJET-Comparative Analysis of DCT and DWT based novel methods for Watermarking
 
SEASR-Meandre Architecture Ws Jan 2009
SEASR-Meandre Architecture Ws Jan 2009SEASR-Meandre Architecture Ws Jan 2009
SEASR-Meandre Architecture Ws Jan 2009
 
Kai Eckert - A Linked Data based Infrastructure for DM2E
Kai Eckert - A Linked Data based Infrastructure for DM2EKai Eckert - A Linked Data based Infrastructure for DM2E
Kai Eckert - A Linked Data based Infrastructure for DM2E
 

More from ESUG

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingESUG
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in PharoESUG
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapESUG
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoESUG
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...ESUG
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsESUG
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6ESUG
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingESUG
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesESUG
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportESUG
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsESUG
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector TuningESUG
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FutureESUG
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the DebuggerESUG
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing ScoreESUG
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptESUG
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocESUG
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsESUG
 

More from ESUG (20)

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in Pharo
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector Tuning
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing Score
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
 

Recently uploaded

Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 

Recently uploaded (20)

Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

Squeak at NetStyle

  • 1. Roadmap ß Introduction ß Seaside Web Applications ß Example: Insurance Application ß Server Management Interface ß ROE ß Smalltalk Relational DB Access Adrian Lienhard & Lukas Renggli, August 2003 Slide 1
  • 2. Introduction ß netstyle.ch founded in 2000 ß Startup specialized in developing Web-Applications ß Team of ~6 people (most parttime) Adrian Lienhard & Lukas Renggli, August 2003 Slide 2
  • 3. Seaside Web-Application ß Sophisticated framework in Squeak ß Server setup: Component Component Seaside Comanche / Swazoo Static files Apache http(s) Web-client Adrian Lienhard & Lukas Renggli, August 2003 Slide 3
  • 4. Example ß Domain: Health Insurance ß Specialized little company with agencies ß Application: Extranet for... ß creating and manageing offers (with printing/pdf) ß process of accepting new policies ß management of existing customers with document-management ß billing for agencies Adrian Lienhard & Lukas Renggli, August 2003 Slide 4
  • 5. Screenshots Adrian Lienhard & Lukas Renggli, August 2003 Slide 5
  • 6. Adrian Lienhard & Lukas Renggli, August 2003 Slide 6
  • 7. Adrian Lienhard & Lukas Renggli, August 2003 Slide 7
  • 8. Adrian Lienhard & Lukas Renggli, August 2003 Slide 8
  • 9. Adrian Lienhard & Lukas Renggli, August 2003 Slide 9
  • 10. ROE ß Generic DB access using Smalltalk ß Automatically generated SQL ß Implementation by Avi Bryant ß Extended while developing insurance application Adrian Lienhard & Lukas Renggli, August 2003 Slide 10
  • 11. Example: Create Table person := factory relation: ‘person’. person create; addColumn: #id withType: #int; addColumn: #name withType : #text. CREATE TABLE person (); ALTER TABLE person ADD COLUMN “id” INT; ALTER TABLE person ADD COLUMN “name” TEXT; Adrian Lienhard & Lukas Renggli, August 2003 Slide 11
  • 12. Simple Example query := person where: [ :id :name | id > 200 & (name like: ‘avi%’) ]. query := query project: #id. query do: [ :row | …] SELECT "id" FROM (SELECT * FROM (SELECT * FROM person) WHERE ("id">200) AND ("name" LIKE 'avi%')) Adrian Lienhard & Lukas Renggli, August 2003 Slide 12
  • 13. Class Diagram Collection 1 1 Relation Transform 1 2 Unary Binary Project Join Concrete Select Intersect Alias Difference Array Postgres Order Union Distinct … Adrian Lienhard & Lukas Renggli, August 2003 Slide 13
  • 14. Advanced Example relation := PLPerson relation where: [ :lastname | lastname like: ‘%’ , self searchName , ‘%’ ignoreCase: true ]. relation := relation project: #familyid. relation := relation * PLPersistentVersionHolder relation. relation := relation whereEqual: #(versionid familyid). relation := relation project: #holderid. relation := relation * PLInternetOffer relation. relation := relation whereEqual: #(holderid id). relation := self applyVisibilityRules: relation. relation := relation project: #id. relation := relation distinct. Adrian Lienhard & Lukas Renggli, August 2003 Slide 14
  • 15. Algebraic Representation P[id](S[(holderid=id)](P[holderid] (S[(versionid=familyid)](P[familyid] (S[(lastnameilike'%avi%')] (table_person)) X table_version_holder)) X table_internetoffer)) Adrian Lienhard & Lukas Renggli, August 2003 Slide 15
  • 16. SQL Query SELECT DISTINCT * FROM (SELECT "id" FROM (SELECT * FROM (SELECT * FROM (SELECT "holderid" FROM (SELECT * FROM (SELECT * FROM (SELECT "familyid" FROM (SELECT * FROM (SELECT * FROM table_person) WHERE ("lastname" ILIKE '%avi%'))), (SELECT * FROM table_version_holder)) WHERE ("versionid"="familyid"))), (SELECT * FROM table_internetoffer)) WHERE ("holderid"="id"))) Adrian Lienhard & Lukas Renggli, August 2003 Slide 16
  • 17. Transaction Example factory transaction: [ users add: #(id name) values: #(1 avi). users add: #(id name) values: #(2 adi). “other updates, queries, …” ] BEGIN; INSERT INTO users (id, name) VALUES (1, ‘avi’); INSERT INTO users (id, name) VALUES (2, ‘adi); … ROLLBACK; COMMIT; Adrian Lienhard & Lukas Renggli, August 2003 Slide 17