SlideShare uma empresa Scribd logo
1 de 18
Baixar para ler offline
Rethink Smalltalk
Index
1. Introduction
2. Problem
3. Goal
4. Solution
5. Demo of version 1 & 3
6. References
Introduction
‱ Founded Cosmocows with Wouter Gazendam
‱ Wouter is main implementer of our development environment (on top
of Visualworks Smalltalk)
‱ I, Mathieu van Echtelt, use this environment to create ‘models’
‱ These models are succesfully in use by fire departments and health
care organizations.
‱ This presentation is about our development environment and how to
create models with it.
Problem
Problem: Developing database-backed web applications for business administration
is hard.
So what do Business Administration systems need?
1. Persistency for model and data.
2. Audit support of model and data changes
3. Authorization support for model and data changes
4. Transaction support for model and data changes
5. Multiple concurrent 'user' support for changing model and data.
6. Evolution support for asynchronous model and data changes
7. Multi paradigm support for model and data formats
When these issues are not generally solved from the beginning,
the complexity of your system grows exponential.
When these are solved, we can make a huge step in development productivity
“Code should not be cluttered with irrelevant statements that may even be inaccurate”
[Dan Ingalls]
Goal
Goal: Resurrect design principles behind Smalltalk 
 in order to enable a single
individual or team to continuously create, change and host database-backed web
applications in a fast, easy, safe and structured way.
What are Smalltalk’s design principles?
Daniel H. H. Ingalls, ‘Design Principles Behind Smalltalk’,
BYTE Magazine, August 1981.
Only 3 out of 17 are highlighted:
1. Personal Mastery
2. Automatic Storage Management
3. Reactive Principle
Design Principle
“Personal Mastery”
“If a system is to serve the creative spirit, it must be entirely comprehensible to a single
individual”.
>> Very difficult in multi paradigm (business) world:
1. Data source tier; e.g. SQL relational databases for data consistency & persistency,
2. Business domain tier; e.g. OO for data manipulation & behavior.
3. Client application tier; e.g. HTTP/IP, Javascript.
4. Presentation tier; e.g. XML/HTML, CSS, ODF
(In Squeak we use Slang for Virtual Machine construction or Seaside’s Canvas for XHTML
construction. This way you can still work in one paradigm (in this case Smalltalk). We need
more of these! But these techniques are only a part of the solution.)
Design Principle
“Storage Management”
“To be truly "object-oriented", a computer system must provide automatic storage management”.
>> Smalltalk wasn’t created for data persistency, integrity and migrations in the first place, like
relational databases are.
“Code should not be cluttered with irrelevant statements that may even be inaccurate”
[Dan Ingalls about automatic storage management]
Design Principle
“Reactive Principle”
“Every component accessible to the user should be able to present itself in a meaningful way for
observation and manipulation”.
>> In today’s (business) world this means observation and manipulation over the internet with a
standard secure web browser by more than one user simultaneously, in an authorized way.
Solution
“Stick to relative simple problems” [Dan Ingalls]
What we have in production/in development to solve relative complex problems:
1. Model description language
2. Model transformations
3. Model dispatcher (installer/handler/code generator)
4. Object persistency, integrity, and migration
5. A web based IDE to develop Models.
6. A web based administration system to manage customers, contracts, logins
Solution
“1. Model Description language”
‱ All about business domain issues,
‱ Nothing about technical facilitation like data persistency & formats,
rendering techniques, transaction & session and memory management).
Solution
“2. Model Transformations”
‱ Model Description is automatically transformed into expressions for all
involved system layers (SQL, OO, HTML, ODF, JS*).
‱ But wait; doesn’t this break the rule of “Model View Control” separation? In
95% of the situations it doesn’t matter. Automate 95%, override 5%.
‱ Round trip
Solution
“3. Model dispatcher”
‱ Model dispatcher (/code generator) mutates all layers into
required state
‱ Administrates and handles every development process step as an explicit
“change instruction” (AddSchemaChange, AddSlotChange,
ChangePropertyChange, etc)
‱ One conceptual change is often expressed in multiple mutations within and
over several software layers and languages.
‱ It is extremely inefficient and error prone for a developer to create all
mutations by hand.
‱ Guarantee consistency over complete system.
Solution
“4. Object persistency, integrity, and migration”
‱ Relational database backend (Postgresql)
‱ Every object can be stored (again 95% rule, but can be overridden)
‱ Automatic (virtual) garbage collection (3 strategies)
‱ Every object change is stored with it’s Class format
‱ “Current” model and data in cache.
‱ Lazy data migration
(A interesting topic of its own; for next years ESUG presentation
.)
Solution
5. A web based IDE to express, test, analyze and configure Models.
6. A web based administration system to manage customers, users,
contracts, logins, and issues.
Demonstration
Three versions:
‱ Version 1: “15 meta tables” kernel + “web based list IDE”. demo, three
perspectives (user, administrator, modeler)
‱ Version 2: “Concrete” Kernel + web based “classic smalltalk” IDE, No demo
only some screen shots (see below)
‱ Version 3: “Syntheses” kernel + web based “sheet” IDE, demo
Version 2
“Classic Smalltalk” IDE
References
‱ “Metadata and active object models” by Brian Foote and Joseph Yoder.
‱ “Versioning systems for evolution research” Romain Robbes and Michele
Lanza.
Questions?
Mathieu at cosmocows.com

Mais conteĂșdo relacionado

Semelhante a Rethink Smalltalk

Domain oriented development
Domain oriented developmentDomain oriented development
Domain oriented developmentrajmundr
 
Real-life Customer Cases using Data Vault and Data Warehouse Automation
Real-life Customer Cases using Data Vault and Data Warehouse AutomationReal-life Customer Cases using Data Vault and Data Warehouse Automation
Real-life Customer Cases using Data Vault and Data Warehouse AutomationPatrick Van Renterghem
 
Migrating From Java EE To Cloud-Native Reactive Systems
Migrating From Java EE To Cloud-Native Reactive SystemsMigrating From Java EE To Cloud-Native Reactive Systems
Migrating From Java EE To Cloud-Native Reactive SystemsLightbend
 
Migrating from Java EE to cloud-native Reactive systems
Migrating from Java EE to cloud-native Reactive systemsMigrating from Java EE to cloud-native Reactive systems
Migrating from Java EE to cloud-native Reactive systemsMarkus Eisele
 
SpringPeople - Introduction to Cloud Computing
SpringPeople - Introduction to Cloud ComputingSpringPeople - Introduction to Cloud Computing
SpringPeople - Introduction to Cloud ComputingSpringPeople
 
ЧурюĐșĐ°ĐœĐŸĐČ Đ’ŃŃ‡Đ”ŃĐ»Đ°ĐČ, “Code simple, but not simpler”
ЧурюĐșĐ°ĐœĐŸĐČ Đ’ŃŃ‡Đ”ŃĐ»Đ°ĐČ, “Code simple, but not simpler”ЧурюĐșĐ°ĐœĐŸĐČ Đ’ŃŃ‡Đ”ŃĐ»Đ°ĐČ, “Code simple, but not simpler”
ЧурюĐșĐ°ĐœĐŸĐČ Đ’ŃŃ‡Đ”ŃĐ»Đ°ĐČ, “Code simple, but not simpler”EPAM Systems
 
Are we there Yet?? (The long journey of Migrating from close source to opens...
Are we there Yet?? (The long journey of Migrating from close source to opens...Are we there Yet?? (The long journey of Migrating from close source to opens...
Are we there Yet?? (The long journey of Migrating from close source to opens...Marco Tusa
 
Architecting for failure - Why are distributed systems hard?
Architecting for failure - Why are distributed systems hard?Architecting for failure - Why are distributed systems hard?
Architecting for failure - Why are distributed systems hard?Markus Eisele
 
VMworld Europe 2014: Virtualizing Databases Doing IT Right – The Sequel
VMworld Europe 2014: Virtualizing Databases Doing IT Right – The SequelVMworld Europe 2014: Virtualizing Databases Doing IT Right – The Sequel
VMworld Europe 2014: Virtualizing Databases Doing IT Right – The SequelVMworld
 
Data massage: How databases have been scaled from one to one million nodes
Data massage: How databases have been scaled from one to one million nodesData massage: How databases have been scaled from one to one million nodes
Data massage: How databases have been scaled from one to one million nodesUlf Wendel
 
Planning to Fail #phpuk13
Planning to Fail #phpuk13Planning to Fail #phpuk13
Planning to Fail #phpuk13Dave Gardner
 
Scaling Systems: Architectures that grow
Scaling Systems: Architectures that growScaling Systems: Architectures that grow
Scaling Systems: Architectures that growGibraltar Software
 
Mykola Mykytenko: MLOps: your way from nonsense to valuable effect (approache...
Mykola Mykytenko: MLOps: your way from nonsense to valuable effect (approache...Mykola Mykytenko: MLOps: your way from nonsense to valuable effect (approache...
Mykola Mykytenko: MLOps: your way from nonsense to valuable effect (approache...Lviv Startup Club
 
markfinleyResumeMarch2016
markfinleyResumeMarch2016markfinleyResumeMarch2016
markfinleyResumeMarch2016Mark Finley
 
CG_CS25010_Lecture
CG_CS25010_LectureCG_CS25010_Lecture
CG_CS25010_LectureConnor Goddard
 
SQL/NoSQL How to choose ?
SQL/NoSQL How to choose ?SQL/NoSQL How to choose ?
SQL/NoSQL How to choose ?Venu Anuganti
 
Viktor Turskyi "Effective NodeJS Application Development"
Viktor Turskyi "Effective NodeJS Application Development"Viktor Turskyi "Effective NodeJS Application Development"
Viktor Turskyi "Effective NodeJS Application Development"Fwdays
 
Dori Exterman, Considerations for choosing the parallel computing strategy th...
Dori Exterman, Considerations for choosing the parallel computing strategy th...Dori Exterman, Considerations for choosing the parallel computing strategy th...
Dori Exterman, Considerations for choosing the parallel computing strategy th...Sergey Platonov
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to MicroservicesMahmoudZidan41
 
Single Page Applications: Your Browser is the OS!
Single Page Applications: Your Browser is the OS!Single Page Applications: Your Browser is the OS!
Single Page Applications: Your Browser is the OS!Jeremy Likness
 

Semelhante a Rethink Smalltalk (20)

Domain oriented development
Domain oriented developmentDomain oriented development
Domain oriented development
 
Real-life Customer Cases using Data Vault and Data Warehouse Automation
Real-life Customer Cases using Data Vault and Data Warehouse AutomationReal-life Customer Cases using Data Vault and Data Warehouse Automation
Real-life Customer Cases using Data Vault and Data Warehouse Automation
 
Migrating From Java EE To Cloud-Native Reactive Systems
Migrating From Java EE To Cloud-Native Reactive SystemsMigrating From Java EE To Cloud-Native Reactive Systems
Migrating From Java EE To Cloud-Native Reactive Systems
 
Migrating from Java EE to cloud-native Reactive systems
Migrating from Java EE to cloud-native Reactive systemsMigrating from Java EE to cloud-native Reactive systems
Migrating from Java EE to cloud-native Reactive systems
 
SpringPeople - Introduction to Cloud Computing
SpringPeople - Introduction to Cloud ComputingSpringPeople - Introduction to Cloud Computing
SpringPeople - Introduction to Cloud Computing
 
ЧурюĐșĐ°ĐœĐŸĐČ Đ’ŃŃ‡Đ”ŃĐ»Đ°ĐČ, “Code simple, but not simpler”
ЧурюĐșĐ°ĐœĐŸĐČ Đ’ŃŃ‡Đ”ŃĐ»Đ°ĐČ, “Code simple, but not simpler”ЧурюĐșĐ°ĐœĐŸĐČ Đ’ŃŃ‡Đ”ŃĐ»Đ°ĐČ, “Code simple, but not simpler”
ЧурюĐșĐ°ĐœĐŸĐČ Đ’ŃŃ‡Đ”ŃĐ»Đ°ĐČ, “Code simple, but not simpler”
 
Are we there Yet?? (The long journey of Migrating from close source to opens...
Are we there Yet?? (The long journey of Migrating from close source to opens...Are we there Yet?? (The long journey of Migrating from close source to opens...
Are we there Yet?? (The long journey of Migrating from close source to opens...
 
Architecting for failure - Why are distributed systems hard?
Architecting for failure - Why are distributed systems hard?Architecting for failure - Why are distributed systems hard?
Architecting for failure - Why are distributed systems hard?
 
VMworld Europe 2014: Virtualizing Databases Doing IT Right – The Sequel
VMworld Europe 2014: Virtualizing Databases Doing IT Right – The SequelVMworld Europe 2014: Virtualizing Databases Doing IT Right – The Sequel
VMworld Europe 2014: Virtualizing Databases Doing IT Right – The Sequel
 
Data massage: How databases have been scaled from one to one million nodes
Data massage: How databases have been scaled from one to one million nodesData massage: How databases have been scaled from one to one million nodes
Data massage: How databases have been scaled from one to one million nodes
 
Planning to Fail #phpuk13
Planning to Fail #phpuk13Planning to Fail #phpuk13
Planning to Fail #phpuk13
 
Scaling Systems: Architectures that grow
Scaling Systems: Architectures that growScaling Systems: Architectures that grow
Scaling Systems: Architectures that grow
 
Mykola Mykytenko: MLOps: your way from nonsense to valuable effect (approache...
Mykola Mykytenko: MLOps: your way from nonsense to valuable effect (approache...Mykola Mykytenko: MLOps: your way from nonsense to valuable effect (approache...
Mykola Mykytenko: MLOps: your way from nonsense to valuable effect (approache...
 
markfinleyResumeMarch2016
markfinleyResumeMarch2016markfinleyResumeMarch2016
markfinleyResumeMarch2016
 
CG_CS25010_Lecture
CG_CS25010_LectureCG_CS25010_Lecture
CG_CS25010_Lecture
 
SQL/NoSQL How to choose ?
SQL/NoSQL How to choose ?SQL/NoSQL How to choose ?
SQL/NoSQL How to choose ?
 
Viktor Turskyi "Effective NodeJS Application Development"
Viktor Turskyi "Effective NodeJS Application Development"Viktor Turskyi "Effective NodeJS Application Development"
Viktor Turskyi "Effective NodeJS Application Development"
 
Dori Exterman, Considerations for choosing the parallel computing strategy th...
Dori Exterman, Considerations for choosing the parallel computing strategy th...Dori Exterman, Considerations for choosing the parallel computing strategy th...
Dori Exterman, Considerations for choosing the parallel computing strategy th...
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
Single Page Applications: Your Browser is the OS!
Single Page Applications: Your Browser is the OS!Single Page Applications: Your Browser is the OS!
Single Page Applications: Your Browser is the OS!
 

Mais de 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
 

Mais de 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
 

Último

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
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
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
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
 
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
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
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
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
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
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
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
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
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
 

Último (20)

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
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
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
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
 
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
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
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
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
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...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
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
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
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
 

Rethink Smalltalk

  • 1. Rethink Smalltalk Index 1. Introduction 2. Problem 3. Goal 4. Solution 5. Demo of version 1 & 3 6. References
  • 2. Introduction ‱ Founded Cosmocows with Wouter Gazendam ‱ Wouter is main implementer of our development environment (on top of Visualworks Smalltalk) ‱ I, Mathieu van Echtelt, use this environment to create ‘models’ ‱ These models are succesfully in use by fire departments and health care organizations. ‱ This presentation is about our development environment and how to create models with it.
  • 3. Problem Problem: Developing database-backed web applications for business administration is hard. So what do Business Administration systems need? 1. Persistency for model and data. 2. Audit support of model and data changes 3. Authorization support for model and data changes 4. Transaction support for model and data changes 5. Multiple concurrent 'user' support for changing model and data. 6. Evolution support for asynchronous model and data changes 7. Multi paradigm support for model and data formats
  • 4. When these issues are not generally solved from the beginning, the complexity of your system grows exponential. When these are solved, we can make a huge step in development productivity “Code should not be cluttered with irrelevant statements that may even be inaccurate” [Dan Ingalls]
  • 5. Goal Goal: Resurrect design principles behind Smalltalk 
 in order to enable a single individual or team to continuously create, change and host database-backed web applications in a fast, easy, safe and structured way. What are Smalltalk’s design principles? Daniel H. H. Ingalls, ‘Design Principles Behind Smalltalk’, BYTE Magazine, August 1981. Only 3 out of 17 are highlighted: 1. Personal Mastery 2. Automatic Storage Management 3. Reactive Principle
  • 6. Design Principle “Personal Mastery” “If a system is to serve the creative spirit, it must be entirely comprehensible to a single individual”. >> Very difficult in multi paradigm (business) world: 1. Data source tier; e.g. SQL relational databases for data consistency & persistency, 2. Business domain tier; e.g. OO for data manipulation & behavior. 3. Client application tier; e.g. HTTP/IP, Javascript. 4. Presentation tier; e.g. XML/HTML, CSS, ODF (In Squeak we use Slang for Virtual Machine construction or Seaside’s Canvas for XHTML construction. This way you can still work in one paradigm (in this case Smalltalk). We need more of these! But these techniques are only a part of the solution.)
  • 7. Design Principle “Storage Management” “To be truly "object-oriented", a computer system must provide automatic storage management”. >> Smalltalk wasn’t created for data persistency, integrity and migrations in the first place, like relational databases are. “Code should not be cluttered with irrelevant statements that may even be inaccurate” [Dan Ingalls about automatic storage management]
  • 8. Design Principle “Reactive Principle” “Every component accessible to the user should be able to present itself in a meaningful way for observation and manipulation”. >> In today’s (business) world this means observation and manipulation over the internet with a standard secure web browser by more than one user simultaneously, in an authorized way.
  • 9. Solution “Stick to relative simple problems” [Dan Ingalls] What we have in production/in development to solve relative complex problems: 1. Model description language 2. Model transformations 3. Model dispatcher (installer/handler/code generator) 4. Object persistency, integrity, and migration 5. A web based IDE to develop Models. 6. A web based administration system to manage customers, contracts, logins
  • 10. Solution “1. Model Description language” ‱ All about business domain issues, ‱ Nothing about technical facilitation like data persistency & formats, rendering techniques, transaction & session and memory management).
  • 11. Solution “2. Model Transformations” ‱ Model Description is automatically transformed into expressions for all involved system layers (SQL, OO, HTML, ODF, JS*). ‱ But wait; doesn’t this break the rule of “Model View Control” separation? In 95% of the situations it doesn’t matter. Automate 95%, override 5%. ‱ Round trip
  • 12. Solution “3. Model dispatcher” ‱ Model dispatcher (/code generator) mutates all layers into required state ‱ Administrates and handles every development process step as an explicit “change instruction” (AddSchemaChange, AddSlotChange, ChangePropertyChange, etc) ‱ One conceptual change is often expressed in multiple mutations within and over several software layers and languages. ‱ It is extremely inefficient and error prone for a developer to create all mutations by hand. ‱ Guarantee consistency over complete system.
  • 13. Solution “4. Object persistency, integrity, and migration” ‱ Relational database backend (Postgresql) ‱ Every object can be stored (again 95% rule, but can be overridden) ‱ Automatic (virtual) garbage collection (3 strategies) ‱ Every object change is stored with it’s Class format ‱ “Current” model and data in cache. ‱ Lazy data migration (A interesting topic of its own; for next years ESUG presentation
.)
  • 14. Solution 5. A web based IDE to express, test, analyze and configure Models. 6. A web based administration system to manage customers, users, contracts, logins, and issues.
  • 15. Demonstration Three versions: ‱ Version 1: “15 meta tables” kernel + “web based list IDE”. demo, three perspectives (user, administrator, modeler) ‱ Version 2: “Concrete” Kernel + web based “classic smalltalk” IDE, No demo only some screen shots (see below) ‱ Version 3: “Syntheses” kernel + web based “sheet” IDE, demo
  • 17.
  • 18. References ‱ “Metadata and active object models” by Brian Foote and Joseph Yoder. ‱ “Versioning systems for evolution research” Romain Robbes and Michele Lanza. Questions? Mathieu at cosmocows.com