SlideShare a Scribd company logo
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
Rethink Smalltalk
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

More Related Content

Similar to Rethink Smalltalk (20)

PPTX
Introduction to Model-View-Controller Framework.pptx
edgecse
 
PDF
Smalltalk in Large-scale Enterprise Architectures
ESUG
 
PDF
Agile Development with Smalltalk - Long
Tomáš Kukol
 
PDF
Agile Development with Smalltalk - Short
Tomáš Kukol
 
PDF
Object Oriented Design Principles
Thang Tran Duc
 
PDF
Code Craftsmanship Checklist
Ryan Polk
 
PDF
Patterns, Code Smells, and The Pragmattic Programmer
Jason McCreary
 
PPTX
Architecture Principles CodeStock
Steve Barbour
 
PPT
Architecting for Change: An Agile Approach
Ben Stopford
 
PDF
Sunny Tech 2019 - Craft Forever
Cyrille Martraire
 
PDF
Why there is no future for Model Driven Development
Johan den Haan
 
PPTX
Programming in the large
Naveenkumar Muguda
 
PPT
Ruby On Rails
iradarji
 
PPT
Smalltalk in large scale enterprise architectures
Rob Vens
 
PDF
Agile Project Management - coClarity
Gerard Hartnett
 
PDF
Introduction to Ruby on Rails
Agnieszka Figiel
 
PPT
Design Pattern with Actionscript
Daniel Swid
 
DOCX
Development of Multiplatform CMS System with Zend Framework
Sinisa Vukovic
 
PPTX
Intro to Domain Driven Design
Yaniv Preiss
 
Introduction to Model-View-Controller Framework.pptx
edgecse
 
Smalltalk in Large-scale Enterprise Architectures
ESUG
 
Agile Development with Smalltalk - Long
Tomáš Kukol
 
Agile Development with Smalltalk - Short
Tomáš Kukol
 
Object Oriented Design Principles
Thang Tran Duc
 
Code Craftsmanship Checklist
Ryan Polk
 
Patterns, Code Smells, and The Pragmattic Programmer
Jason McCreary
 
Architecture Principles CodeStock
Steve Barbour
 
Architecting for Change: An Agile Approach
Ben Stopford
 
Sunny Tech 2019 - Craft Forever
Cyrille Martraire
 
Why there is no future for Model Driven Development
Johan den Haan
 
Programming in the large
Naveenkumar Muguda
 
Ruby On Rails
iradarji
 
Smalltalk in large scale enterprise architectures
Rob Vens
 
Agile Project Management - coClarity
Gerard Hartnett
 
Introduction to Ruby on Rails
Agnieszka Figiel
 
Design Pattern with Actionscript
Daniel Swid
 
Development of Multiplatform CMS System with Zend Framework
Sinisa Vukovic
 
Intro to Domain Driven Design
Yaniv Preiss
 

More from ESUG (20)

PDF
Composing and Performing Electronic Music on-the-Fly with Pharo and Coypu
ESUG
 
PDF
Gamifying Agent-Based Models in Cormas: Towards the Playable Architecture for...
ESUG
 
PDF
Analysing Python Machine Learning Notebooks with Moose
ESUG
 
PDF
FASTTypeScript metamodel generation using FAST traits and TreeSitter project
ESUG
 
PDF
Migrating Katalon Studio Tests to Playwright with Model Driven Engineering
ESUG
 
PDF
Package-Aware Approach for Repository-Level Code Completion in Pharo
ESUG
 
PDF
Evaluating Benchmark Quality: a Mutation-Testing- Based Methodology
ESUG
 
PDF
An Analysis of Inline Method Refactoring
ESUG
 
PDF
Identification of unnecessary object allocations using static escape analysis
ESUG
 
PDF
Control flow-sensitive optimizations In the Druid Meta-Compiler
ESUG
 
PDF
Clean Blocks (IWST 2025, Gdansk, Poland)
ESUG
 
PDF
Encoding for Objects Matters (IWST 2025)
ESUG
 
PDF
Challenges of Transpiling Smalltalk to JavaScript
ESUG
 
PDF
Immersive experiences: what Pharo users do!
ESUG
 
PDF
ChatPharo: an Open Architecture for Understanding How to Talk Live to LLMs
ESUG
 
PDF
Cavrois - an Organic Window Management (ESUG 2025)
ESUG
 
PDF
Fluid Class Definitions in Pharo (ESUG 2025)
ESUG
 
PDF
Glamorous Toolkit (ESUG 2025, Gdansk, Poland)
ESUG
 
PDF
Clap: Command Line Argument Parser (ESUG 2025)
ESUG
 
PDF
Canyon: Creating mobile apps using CodeParadise
ESUG
 
Composing and Performing Electronic Music on-the-Fly with Pharo and Coypu
ESUG
 
Gamifying Agent-Based Models in Cormas: Towards the Playable Architecture for...
ESUG
 
Analysing Python Machine Learning Notebooks with Moose
ESUG
 
FASTTypeScript metamodel generation using FAST traits and TreeSitter project
ESUG
 
Migrating Katalon Studio Tests to Playwright with Model Driven Engineering
ESUG
 
Package-Aware Approach for Repository-Level Code Completion in Pharo
ESUG
 
Evaluating Benchmark Quality: a Mutation-Testing- Based Methodology
ESUG
 
An Analysis of Inline Method Refactoring
ESUG
 
Identification of unnecessary object allocations using static escape analysis
ESUG
 
Control flow-sensitive optimizations In the Druid Meta-Compiler
ESUG
 
Clean Blocks (IWST 2025, Gdansk, Poland)
ESUG
 
Encoding for Objects Matters (IWST 2025)
ESUG
 
Challenges of Transpiling Smalltalk to JavaScript
ESUG
 
Immersive experiences: what Pharo users do!
ESUG
 
ChatPharo: an Open Architecture for Understanding How to Talk Live to LLMs
ESUG
 
Cavrois - an Organic Window Management (ESUG 2025)
ESUG
 
Fluid Class Definitions in Pharo (ESUG 2025)
ESUG
 
Glamorous Toolkit (ESUG 2025, Gdansk, Poland)
ESUG
 
Clap: Command Line Argument Parser (ESUG 2025)
ESUG
 
Canyon: Creating mobile apps using CodeParadise
ESUG
 
Ad

Recently uploaded (20)

PPTX
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
PDF
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
PDF
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
 
PDF
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
PPTX
Agile Chennai 18-19 July 2025 Ideathon | AI Powered Microfinance Literacy Gui...
AgileNetwork
 
PDF
NewMind AI Weekly Chronicles – July’25, Week III
NewMind AI
 
PDF
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
PPTX
Agentic AI in Healthcare Driving the Next Wave of Digital Transformation
danielle hunter
 
PPTX
The Future of AI & Machine Learning.pptx
pritsen4700
 
PDF
Market Insight : ETH Dominance Returns
CIFDAQ
 
PPTX
AVL ( audio, visuals or led ), technology.
Rajeshwri Panchal
 
PPTX
Agile Chennai 18-19 July 2025 | Emerging patterns in Agentic AI by Bharani Su...
AgileNetwork
 
PDF
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
PDF
Researching The Best Chat SDK Providers in 2025
Ray Fields
 
PPTX
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
PDF
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
PPTX
Farrell_Programming Logic and Design slides_10e_ch02_PowerPoint.pptx
bashnahara11
 
PDF
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
PDF
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
PDF
Build with AI and GDG Cloud Bydgoszcz- ADK .pdf
jaroslawgajewski1
 
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
 
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
Agile Chennai 18-19 July 2025 Ideathon | AI Powered Microfinance Literacy Gui...
AgileNetwork
 
NewMind AI Weekly Chronicles – July’25, Week III
NewMind AI
 
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
Agentic AI in Healthcare Driving the Next Wave of Digital Transformation
danielle hunter
 
The Future of AI & Machine Learning.pptx
pritsen4700
 
Market Insight : ETH Dominance Returns
CIFDAQ
 
AVL ( audio, visuals or led ), technology.
Rajeshwri Panchal
 
Agile Chennai 18-19 July 2025 | Emerging patterns in Agentic AI by Bharani Su...
AgileNetwork
 
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
Researching The Best Chat SDK Providers in 2025
Ray Fields
 
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
Farrell_Programming Logic and Design slides_10e_ch02_PowerPoint.pptx
bashnahara11
 
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
Build with AI and GDG Cloud Bydgoszcz- ADK .pdf
jaroslawgajewski1
 
Ad

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
  • 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