Submit Search
Upload
Kutoa: Programming the Web in Smalltalk
•
0 likes
•
470 views
E
ESUG
Follow
Talk from ESUG19, Cologne, Germany
Read less
Read more
Technology
Report
Share
Report
Share
1 of 18
Download now
Download to read offline
Recommended
An introduction to coding
An introduction to coding
iain bruce
Apps that-inspire
Apps that-inspire
Brian Melanson
Top 10 programming languages
Top 10 programming languages
Aman Kumar
Programming languages
Programming languages
Tammy London
INTRODUCTIONS OF HTML
INTRODUCTIONS OF HTML
SURYANARAYANBISWAL1
Windows 8 App Development
Windows 8 App Development
Google Developer Group - Galgotias University
Presentation [autosaved] unacademy
Presentation [autosaved] unacademy
RohitSingh1405
Alternative programs
Alternative programs
Michał Wiszniewski
Recommended
An introduction to coding
An introduction to coding
iain bruce
Apps that-inspire
Apps that-inspire
Brian Melanson
Top 10 programming languages
Top 10 programming languages
Aman Kumar
Programming languages
Programming languages
Tammy London
INTRODUCTIONS OF HTML
INTRODUCTIONS OF HTML
SURYANARAYANBISWAL1
Windows 8 App Development
Windows 8 App Development
Google Developer Group - Galgotias University
Presentation [autosaved] unacademy
Presentation [autosaved] unacademy
RohitSingh1405
Alternative programs
Alternative programs
Michał Wiszniewski
Computer Science Is The Study Of Principals And How The...
Computer Science Is The Study Of Principals And How The...
Laura Martin
Integrating Technology In The ELA Classroom
Integrating Technology In The ELA Classroom
Carla Jefferson
Arti Languages Pre Seed Send Ahead Pitchdeck 2024.pdf
Arti Languages Pre Seed Send Ahead Pitchdeck 2024.pdf
will854175
Arti Languages Pre Seed Pitchdeck 2024.pdf
Arti Languages Pre Seed Pitchdeck 2024.pdf
will854175
Java As A Programming Language
Java As A Programming Language
Jennifer Wright
Language translator
Language translator
SumitSumit26
Introduction to computer_lec_07_fall_2018_python_lec_101
Introduction to computer_lec_07_fall_2018_python_lec_101
Ramadan Babers, PhD
Procedural Programming Of Programming Languages
Procedural Programming Of Programming Languages
Tammy Moncrief
languagetranslator-211028085026.pptx
languagetranslator-211028085026.pptx
MDASIFALI32
ELL
ELL
loricrum
Build your own Language - Why and How?
Build your own Language - Why and How?
Markus Voelter
Chapter5
Chapter5
jessa amon
What is a "programmer"?
What is a "programmer"?
Jeff Crockett
Teaching Kids Programming
Teaching Kids Programming
Lynn Langit
What is Swift? Features, advantages, and syntax basics
What is Swift? Features, advantages, and syntax basics
Sample Assignment
Graphics Layout Project
Graphics Layout Project
fpcstarlets
Session One Free Tools For UDL In Literacy
Session One Free Tools For UDL In Literacy
lillyhearn
What is the best programming language to learn if you want to work on the blo...
What is the best programming language to learn if you want to work on the blo...
BlockchainX
Python lec 1001_for_biologists
Python lec 1001_for_biologists
Ramadan Babers, PhD
whatiscodingslideshare-180406204414.pptx
whatiscodingslideshare-180406204414.pptx
Kanden ARMOOGUM
Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
ESUG
Technical documentation support in Pharo
Technical documentation support in Pharo
ESUG
More Related Content
Similar to Kutoa: Programming the Web in Smalltalk
Computer Science Is The Study Of Principals And How The...
Computer Science Is The Study Of Principals And How The...
Laura Martin
Integrating Technology In The ELA Classroom
Integrating Technology In The ELA Classroom
Carla Jefferson
Arti Languages Pre Seed Send Ahead Pitchdeck 2024.pdf
Arti Languages Pre Seed Send Ahead Pitchdeck 2024.pdf
will854175
Arti Languages Pre Seed Pitchdeck 2024.pdf
Arti Languages Pre Seed Pitchdeck 2024.pdf
will854175
Java As A Programming Language
Java As A Programming Language
Jennifer Wright
Language translator
Language translator
SumitSumit26
Introduction to computer_lec_07_fall_2018_python_lec_101
Introduction to computer_lec_07_fall_2018_python_lec_101
Ramadan Babers, PhD
Procedural Programming Of Programming Languages
Procedural Programming Of Programming Languages
Tammy Moncrief
languagetranslator-211028085026.pptx
languagetranslator-211028085026.pptx
MDASIFALI32
ELL
ELL
loricrum
Build your own Language - Why and How?
Build your own Language - Why and How?
Markus Voelter
Chapter5
Chapter5
jessa amon
What is a "programmer"?
What is a "programmer"?
Jeff Crockett
Teaching Kids Programming
Teaching Kids Programming
Lynn Langit
What is Swift? Features, advantages, and syntax basics
What is Swift? Features, advantages, and syntax basics
Sample Assignment
Graphics Layout Project
Graphics Layout Project
fpcstarlets
Session One Free Tools For UDL In Literacy
Session One Free Tools For UDL In Literacy
lillyhearn
What is the best programming language to learn if you want to work on the blo...
What is the best programming language to learn if you want to work on the blo...
BlockchainX
Python lec 1001_for_biologists
Python lec 1001_for_biologists
Ramadan Babers, PhD
whatiscodingslideshare-180406204414.pptx
whatiscodingslideshare-180406204414.pptx
Kanden ARMOOGUM
Similar to Kutoa: Programming the Web in Smalltalk
(20)
Computer Science Is The Study Of Principals And How The...
Computer Science Is The Study Of Principals And How The...
Integrating Technology In The ELA Classroom
Integrating Technology In The ELA Classroom
Arti Languages Pre Seed Send Ahead Pitchdeck 2024.pdf
Arti Languages Pre Seed Send Ahead Pitchdeck 2024.pdf
Arti Languages Pre Seed Pitchdeck 2024.pdf
Arti Languages Pre Seed Pitchdeck 2024.pdf
Java As A Programming Language
Java As A Programming Language
Language translator
Language translator
Introduction to computer_lec_07_fall_2018_python_lec_101
Introduction to computer_lec_07_fall_2018_python_lec_101
Procedural Programming Of Programming Languages
Procedural Programming Of Programming Languages
languagetranslator-211028085026.pptx
languagetranslator-211028085026.pptx
ELL
ELL
Build your own Language - Why and How?
Build your own Language - Why and How?
Chapter5
Chapter5
What is a "programmer"?
What is a "programmer"?
Teaching Kids Programming
Teaching Kids Programming
What is Swift? Features, advantages, and syntax basics
What is Swift? Features, advantages, and syntax basics
Graphics Layout Project
Graphics Layout Project
Session One Free Tools For UDL In Literacy
Session One Free Tools For UDL In Literacy
What is the best programming language to learn if you want to work on the blo...
What is the best programming language to learn if you want to work on the blo...
Python lec 1001_for_biologists
Python lec 1001_for_biologists
whatiscodingslideshare-180406204414.pptx
whatiscodingslideshare-180406204414.pptx
More from ESUG
Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
ESUG
Technical documentation support in Pharo
Technical documentation support in Pharo
ESUG
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
ESUG
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
ESUG
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 results
ESUG
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
ESUG
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
ESUG
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
ESUG
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
ESUG
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
ESUG
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
ESUG
Garbage Collector Tuning
Garbage Collector Tuning
ESUG
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
ESUG
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
ESUG
thisContext in the Debugger
thisContext in the Debugger
ESUG
Websockets for Fencing Score
Websockets for Fencing Score
ESUG
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ESUG
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
ESUG
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
ESUG
More from ESUG
(20)
Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
Technical 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 Roadmap
Sequence: 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...
Analyzing 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 6
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
Creating 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 Modes
Exploring 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 APIs
Garbage Collector Tuning
Garbage Collector Tuning
Improving 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 Future
thisContext in the Debugger
thisContext in the Debugger
Websockets for Fencing Score
Websockets for Fencing Score
ShowUs: 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 Mooc
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
Recently uploaded
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
carlostorres15106
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
Alfredo García Lavilla
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
Fwdays
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
Fwdays
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
The Digital Insurer
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
Slibray Presentation
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
BookNet Canada
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
UiPathCommunity
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
NavinnSomaal
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
comworks
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
Padma Pradeep
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
Sergiu Bodiu
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
Ridwan Fadjar
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
ScyllaDB
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
hariprasad279825
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
Fwdays
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
Manik S Magar
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
2toLead Limited
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
gvaughan
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
Fwdays
Recently uploaded
(20)
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
Kutoa: Programming the Web in Smalltalk
1.
Kutoa: Programming the
Web in Smalltalk Ewan Dawson ESUG 2019
2.
Why do we create software? solve
problems explore answer questions have fun build cool stuff
3.
What’s wrong with software development? write test build deploy run manage update
4.
What’s wrong with software development? language ide libraries version
control package manager build system ci pipleline
5.
What’s wrong with software development? lots
of incidental work many technologies to learn re-use is difficult takes too long
6.
What’s my vision for software development?
7.
What’s my vision for software development? When
my friend Isabella emails me in Spanish, I want her email translated and sent to my phone as a notification.
8.
What’s my vision for software development? Email
inbox when: MailReceived filter: [ mail sender is: Isabella ] do: [ Phone notify: (mail body translate) ]
9.
What’s my vision for software development?
10.
What does the solution
look like? internet of objects sharing and reuse always live polyglot simple productive
11.
Kutoa. internet of objects sharing
and reuse always live polyglot simple productive
12.
A language for gluing
software together Kutoa. references objects literals messages scripts
13.
A language for gluing
software together Kutoa. no variables no classes lazily evaluated
14.
A language for gluing
software together Kutoa. evaluation exception context
15.
A VM for gluing
software together Kutoa. parser operational semantics core methods platform
16.
Kutoa. Greeting ->
‘Hello world!’ RepeatString -> RepeatString:v1 RepeatString:v1 -> ‘^(receiver value) repeat: (arguments first value)’ String/repeat: -> (Runtime method: RepeatString) invokeOn: receiver withArgs: arguments Greeting repeat: 5 Runtime Method/invokeOn:withArgs: Context VM ‘Hello world!’ repeat: 5 (Runtime method: RepeatString) invokeOn: ‘Hello world!’ withArgs: { 3 } (Runtime@1234 method: RepeatString) invokeOn: ‘Hello world!’ withArgs: { 3 } (Runtime@1234 method: RepeatString:v1) invokeOn: ‘Hello world!’ withArgs: { 3 }
17.
Kutoa. Greeting ->
‘Hello world!’ RepeatString -> RepeatString:v1 RepeatString:v1 -> ‘^(receiver value) repeat: (arguments first value)’ String/repeat: -> (Runtime method: RepeatString) invokeOn: receiver withArgs: arguments (Runtime@1234 method: RepeatString:v1) invokeOn: “Hello world!” withArgs: { 3 } Runtime Method/invokeOn:withArgs: Context VM (Runtime@1234 method: “^(receiver value)...”) invokeOn: “Hello world!” withArgs: { 3 } Method@4567 invokeOn: “Hello world!” withArgs: { 3 } “Hello world!Hello world!Hello world!”
18.
Let’s collaborate EwanDawson/kutoa ewan@lazygun.net
Download now