SlideShare a Scribd company logo
1 of 37
Download to read offline
Winning the Application
Server Arms Race
Using Smalltalk to Redefine Web Development
Avi Bryant
Web apps: why bother?
“I’m more of the mind that HTML based
apps suck.”
— James Robertson
Web apps: why bother?
“One of the reasons to use Lisp in writing
Web-based applications is that you ca!
use Lisp. When you’re writing software
that is only going to run on your own
servers, you can use whatever language
you want.”
— Paul Graham
What is a web app?
“A collection of functions that take
HTTP requests as input and produce
HTTP responses as output.”
What is a web app?
User with Web Browser
GET /foo?x=3
...
Content-Type:
text/html
...
/foo
What is a web app?
User with Web Browser
GET /foo?x=3
...
Content-Type:
text/html
<a href=“/bar”
...
/foo /bar /baz
Client/server app
VisualWorks Client
GemStone Server
Get
Shipping
Address
Get
Billing
Address
Get
Payment
Info
Show
Confirmation
Get
Shipping
Address
Get
Billing
Address
Get
Payment
Info
Show
Confirmation
Cart info Cart info
Shipping info
Cart info
Shipping info
Billing info
Cart info
Shipping info
Billing info
Payment info
/shipping
User with Web Browser
cart
/billing
cart
shipping
cart
shipping
/payment
cart
shipping
billing
cart
shipping
billing
cart
shipping
billing
payment
User with Web Browser
cart cart
shipping
cart
shipping
cart
shipping
billing
cart
shipping
billing
cart
shipping
billing
payment
formatting
processing
formatting
do stuff
processing
formatting
do stuffdo stuff
processing
an App
a32cf6d
a Sessiona Sessiona Session
76ebc65
...
User
GET /foo?sid=a32cf6d
... <a href=“/bar?sid=a32cf6d”>...
/foo
an App
a32cf6d
a Sessiona Sessiona Session
76ebc65
...
User
GET /bar?sid=a32cf6d
... <a href=“/baz?sid=a32cf6d”>...
/bar
/shipping
User with Web Browser
/billing
sid
shipping
/payment
sid
billing
sid
payment
a Session
shipping billing
sid sid sid
sessions
Book
flight
Browse
flights
Choose
flight
Choose
seat
Why global session state is evil
Book
flight
Browse
flights
Choose
flight
Choose
seat
Choose
flight
Choose
seat
Why global session state is evil
Book
flight
Browse
flights
Choose
flight
Choose
seat
Choose
flight
Choose
seat
?
Why global session state is evil
an App
a32cf6d
a Sessiona Sessiona Session
76ebc65
...
a Component
f5c
a Component a Component
a21
...
... <input name=“page”
value=“f5b”>...
a Session
a21
a BrowseFlights
POST ... page=a21&flight=747
... <input name=“page”
value=“a21”>...
User a ChooseFlight
f5b
a Session
a21
a BrowseFlights
POST ... page=a21&flight=525
User
... <input name=“page”
value=“cc4”>...
a ChooseFlight
cc4
f5b
a ChooseFlight
WOComponent
subclass: #BillingAddress
instanceVariableNames: ‘ship bill’
response
^ ‘<form ...’
processRequest: aRequest
bill := self addressFrom: aRequest.
^ PaymentInfo new
shippingAddress: ship;
billingAddress: bill;
yourself
“Seaside is to most other Smalltalk web
toolkits as Smalltalk is to most other OO
languages, it’s as simple as that.”
— Cees de Groot
WebObjects
• http://www.apple.com/webobjects/
• http://jakarta.apache.org/tapestry/
WOComponent
subclass: #BillingAddress
instanceVariableNames: ‘ship bill’
processRequest: aRequest
bill := self addressFrom: aRequest.
^ PaymentInfo new
shippingAddress: ship;
billingAddress: bill;
yourself
WOComponent
subclass: #BillingAddress
instanceVariableNames: ‘ship bill’
processRequest: aRequest
bill := self addressFrom: aRequest.
^ PaymentInfo new
shippingAddress: ship;
billingAddress: bill;
next: (ConfirmationPage new)
yourself
WOComponent
subclass: #BillingAddress
instanceVariableNames: ‘ship bill’
processRequest: aRequest
bill := self addressFrom: aRequest.
^ next
shippingAddress: ship;
billingAddress: bill;
yourself
checkoutProcess
^ (ShippingAddress new next:
(BillingAddress new next:
(PaymentInfo new next:
(ConfirmationPage new))))
WOComponent
subclass: #BillingAddress
instanceVariableNames: ‘ship bill’
processRequest: aRequest
bill := self addressFrom: aRequest.
^ next value: bill
“BillingAddress new next:
[:bill |
PaymentInfo new
billingAddress: bill;
....]”
checkoutProcess
^ ShippingAddress new next:
[:ship |
BillingAddress new next:
[:bill |
PaymentInfo new next:
[:pay |
ConfirmationPage new
shippingAddress: ship;
billingAddress: bill;
paymentInfo: pay;
yourself]
checkoutProcess
^ PaymentInfo new next:
[:pay |
ShippingAdress new next:
[:ship |
BillingAddress new next:
[:bill |
ConfirmationPage new
shippingAddress: ship;
billingAddress: bill;
paymentInfo: pay;
yourself]
“...programming language features do well
(all other things being equal) when they
eliminate either distant or dynamic state
and replace it with either close or lexical
state. The underlying point being that we
may favour language features that
facilitate copying and modifying small
bits of code -- fragments which work in
their new context -- as a fundamental
programming activity.”
— Graydon Hoare
checkoutProcess
|pay ship bill|
pay := self call: PaymentInfo new.
ship := self call: ShippingAddress new.
bill := self call: BillingAddress new.
self call:
(ConfirmationPage new
shippingAddress: ship;
billingAddress: bill;
paymentInfo: pay)
“We could write the code to say, if the
user clicks on this link, go to the color
selection page, and then come back
here.... It made our software visibly more
sophisticated than that of our
competitors.”
— Paul Graham
<form>
Name: <input name="name"><br>
Street: <input name="street"><br>
City: <input name="city"><br>
Country:
<select name="country">
<option value="CA">Canada</option>
<option value="US">US</option>
</select>
<br>
<input type="submit">
</form>
aRequest( ‘name’->‘Avi’,
‘street’-> ‘123 W. 15th’
‘city’->‘Vancouver’,
‘country’-> ‘CA’)
renderOn: html
html form: [
html label: ‘Name’.
html textInputNamed: ‘name’; break.
html label: ‘Street’.
html textInputNamed: ‘street’; break.
html label: ‘City’.
html textInputNamed: ‘city’; break.
html label: ‘Country’.
html selectNamed: ‘country’ do: [
html optionNamed: ‘CA’ label: ‘Canada’.
html optionNamed: ‘US’ label: ‘US’.
]; break.
html submitButton.
]
processRequest: aRequest
name := aRequest at: ‘name’.
street := aRequest at: ‘street’.
...
renderOn: html
html form: [
html label: ‘Name’.
html textInputWithCallback: [:v | name := v]; break.
html label: ‘Street’.
html textInputWithCallback: [:v | street := v]; break.
html label: ‘City’.
html textInputWithCallback: [:v | city := v]; ‘city’; break.
html label: ‘Country’.
html selectFromList: self countries; break.
html submitButtonWithAction: [self saveAddress].
]
<form>
Name: <input name="1"><br>
Street: <input name="2"><br>
City: <input name="3"><br>
Country:
<select name="4">
<option value="5">Canada</option>
<option value="6">US</option>
</select>
<br>
<input type="submit" name="7" value="Submit">
</form>
aRequest(
‘1’->‘Avi’,
‘2’->...,
‘7’-> ‘Submit’)
aCallbackStore(
‘1’->[:v | name := v],
‘2’->...,
‘7’->[self saveAddress])

More Related Content

Viewers also liked

Erlang in 11 Minutes
Erlang in 11 MinutesErlang in 11 Minutes
Erlang in 11 MinutesESUG
 
PyPy
PyPyPyPy
PyPyESUG
 
Glass
GlassGlass
GlassESUG
 
Daily Living Solutions Product Catalog v4-02
Daily Living Solutions Product Catalog v4-02Daily Living Solutions Product Catalog v4-02
Daily Living Solutions Product Catalog v4-02Courtney Berg
 
Tomar Emergency Vehicle Products - Lightbars, LED Lightheads, Self-contained ...
Tomar Emergency Vehicle Products - Lightbars, LED Lightheads, Self-contained ...Tomar Emergency Vehicle Products - Lightbars, LED Lightheads, Self-contained ...
Tomar Emergency Vehicle Products - Lightbars, LED Lightheads, Self-contained ...Thorne & Derrick International
 
Tomar Industrial Signalling Products - Visual Signals, LED, Strobe Lighting, ...
Tomar Industrial Signalling Products - Visual Signals, LED, Strobe Lighting, ...Tomar Industrial Signalling Products - Visual Signals, LED, Strobe Lighting, ...
Tomar Industrial Signalling Products - Visual Signals, LED, Strobe Lighting, ...Thorne & Derrick International
 
ShopLowVision.com Products for Eye Care Professionals product catalog, v. 4.01
ShopLowVision.com Products for Eye Care Professionals product catalog, v. 4.01ShopLowVision.com Products for Eye Care Professionals product catalog, v. 4.01
ShopLowVision.com Products for Eye Care Professionals product catalog, v. 4.01Optelec US Inc.
 
Extreme
ExtremeExtreme
ExtremeESUG
 
Starting fresh every morning
Starting fresh every morningStarting fresh every morning
Starting fresh every morningESUG
 
Krestianstvo
KrestianstvoKrestianstvo
KrestianstvoESUG
 
A JIT Smalltalk VM written in itself
A JIT Smalltalk VM written in itselfA JIT Smalltalk VM written in itself
A JIT Smalltalk VM written in itselfESUG
 
Эмнэлгийн тавилга - Provita general catalogue
Эмнэлгийн тавилга - Provita general catalogue Эмнэлгийн тавилга - Provita general catalogue
Эмнэлгийн тавилга - Provita general catalogue Medimpex Mongolia
 
Advanced Techniques for BuildingTestingTools
Advanced Techniques for BuildingTestingToolsAdvanced Techniques for BuildingTestingTools
Advanced Techniques for BuildingTestingToolsESUG
 
Calling Java - JNIPort for VisualWorks
Calling Java - JNIPort for VisualWorksCalling Java - JNIPort for VisualWorks
Calling Java - JNIPort for VisualWorksESUG
 
Para ANAIS
Para ANAISPara ANAIS
Para ANAISchp
 
Tegnologia aplicada
Tegnologia  aplicadaTegnologia  aplicada
Tegnologia aplicadamarlencuesta
 
Kundenrezensionen und ihre Wirkung auf das Kaufverhalten
Kundenrezensionen und ihre Wirkung auf das KaufverhaltenKundenrezensionen und ihre Wirkung auf das Kaufverhalten
Kundenrezensionen und ihre Wirkung auf das KaufverhaltenBenjamin Kurczyk
 

Viewers also liked (20)

Erlang in 11 Minutes
Erlang in 11 MinutesErlang in 11 Minutes
Erlang in 11 Minutes
 
PyPy
PyPyPyPy
PyPy
 
Glass
GlassGlass
Glass
 
Daily Living Solutions Product Catalog v4-02
Daily Living Solutions Product Catalog v4-02Daily Living Solutions Product Catalog v4-02
Daily Living Solutions Product Catalog v4-02
 
Tomar Emergency Vehicle Products - Lightbars, LED Lightheads, Self-contained ...
Tomar Emergency Vehicle Products - Lightbars, LED Lightheads, Self-contained ...Tomar Emergency Vehicle Products - Lightbars, LED Lightheads, Self-contained ...
Tomar Emergency Vehicle Products - Lightbars, LED Lightheads, Self-contained ...
 
Tomar Industrial Signalling Products - Visual Signals, LED, Strobe Lighting, ...
Tomar Industrial Signalling Products - Visual Signals, LED, Strobe Lighting, ...Tomar Industrial Signalling Products - Visual Signals, LED, Strobe Lighting, ...
Tomar Industrial Signalling Products - Visual Signals, LED, Strobe Lighting, ...
 
Sunsplash ohp manual
Sunsplash ohp manualSunsplash ohp manual
Sunsplash ohp manual
 
ShopLowVision.com Products for Eye Care Professionals product catalog, v. 4.01
ShopLowVision.com Products for Eye Care Professionals product catalog, v. 4.01ShopLowVision.com Products for Eye Care Professionals product catalog, v. 4.01
ShopLowVision.com Products for Eye Care Professionals product catalog, v. 4.01
 
Extreme
ExtremeExtreme
Extreme
 
Starting fresh every morning
Starting fresh every morningStarting fresh every morning
Starting fresh every morning
 
Krestianstvo
KrestianstvoKrestianstvo
Krestianstvo
 
RESTful services Design Lab
RESTful services Design LabRESTful services Design Lab
RESTful services Design Lab
 
A JIT Smalltalk VM written in itself
A JIT Smalltalk VM written in itselfA JIT Smalltalk VM written in itself
A JIT Smalltalk VM written in itself
 
Эмнэлгийн тавилга - Provita general catalogue
Эмнэлгийн тавилга - Provita general catalogue Эмнэлгийн тавилга - Provita general catalogue
Эмнэлгийн тавилга - Provita general catalogue
 
Advanced Techniques for BuildingTestingTools
Advanced Techniques for BuildingTestingToolsAdvanced Techniques for BuildingTestingTools
Advanced Techniques for BuildingTestingTools
 
Calling Java - JNIPort for VisualWorks
Calling Java - JNIPort for VisualWorksCalling Java - JNIPort for VisualWorks
Calling Java - JNIPort for VisualWorks
 
Para ANAIS
Para ANAISPara ANAIS
Para ANAIS
 
Tegnologia aplicada
Tegnologia  aplicadaTegnologia  aplicada
Tegnologia aplicada
 
Vamos De Compras
Vamos De ComprasVamos De Compras
Vamos De Compras
 
Kundenrezensionen und ihre Wirkung auf das Kaufverhalten
Kundenrezensionen und ihre Wirkung auf das KaufverhaltenKundenrezensionen und ihre Wirkung auf das Kaufverhalten
Kundenrezensionen und ihre Wirkung auf das Kaufverhalten
 

Similar to Winning the Application Server Arms Race

The Future of Progressive Web Apps - View Source conference, Berlin 2016
The Future of Progressive Web Apps - View Source conference, Berlin 2016The Future of Progressive Web Apps - View Source conference, Berlin 2016
The Future of Progressive Web Apps - View Source conference, Berlin 2016Robert Nyman
 
SenchaCon 2016: A Look Ahead: Survey Next-Gen Modern Browser APIs - Shikhir S...
SenchaCon 2016: A Look Ahead: Survey Next-Gen Modern Browser APIs - Shikhir S...SenchaCon 2016: A Look Ahead: Survey Next-Gen Modern Browser APIs - Shikhir S...
SenchaCon 2016: A Look Ahead: Survey Next-Gen Modern Browser APIs - Shikhir S...Sencha
 
SRV418 Deep Dive on Accelerating Content, APIs, and Applications with Amazon ...
SRV418 Deep Dive on Accelerating Content, APIs, and Applications with Amazon ...SRV418 Deep Dive on Accelerating Content, APIs, and Applications with Amazon ...
SRV418 Deep Dive on Accelerating Content, APIs, and Applications with Amazon ...Amazon Web Services
 
Building Advanced Serverless Applications
Building Advanced Serverless ApplicationsBuilding Advanced Serverless Applications
Building Advanced Serverless ApplicationsAmazon Web Services
 
The Future of the Web - Cold Front conference 2016
The Future of the Web - Cold Front conference 2016The Future of the Web - Cold Front conference 2016
The Future of the Web - Cold Front conference 2016Robert Nyman
 
cross-platform-assets-based-front-end-architecture
cross-platform-assets-based-front-end-architecturecross-platform-assets-based-front-end-architecture
cross-platform-assets-based-front-end-architectureOleksandr Tserkovnyi
 
Implementation of GUI Framework part3
Implementation of GUI Framework part3Implementation of GUI Framework part3
Implementation of GUI Framework part3masahiroookubo
 
First impression of the new cloud native programming language ballerina
First impression of the new cloud native programming language ballerinaFirst impression of the new cloud native programming language ballerina
First impression of the new cloud native programming language ballerinaRichárd Kovács
 
Distributed Parcel Tracking/Management System Overview
Distributed Parcel Tracking/Management System OverviewDistributed Parcel Tracking/Management System Overview
Distributed Parcel Tracking/Management System OverviewMark Cheeseman
 
AWS Step Functions을 활용한 서버리스 앱 오케스트레이션
AWS Step Functions을 활용한 서버리스 앱 오케스트레이션AWS Step Functions을 활용한 서버리스 앱 오케스트레이션
AWS Step Functions을 활용한 서버리스 앱 오케스트레이션Amazon Web Services Korea
 
MongoDB.local Berlin: App development in a Serverless World
MongoDB.local Berlin: App development in a Serverless WorldMongoDB.local Berlin: App development in a Serverless World
MongoDB.local Berlin: App development in a Serverless WorldMongoDB
 
Clean up this mess - API Gateway & Service Discovery in .NET
Clean up this mess - API Gateway & Service Discovery in .NETClean up this mess - API Gateway & Service Discovery in .NET
Clean up this mess - API Gateway & Service Discovery in .NETMarcin Tyborowski
 
Hilfe, wir brauchen ein Frontend
Hilfe, wir brauchen ein FrontendHilfe, wir brauchen ein Frontend
Hilfe, wir brauchen ein FrontendOPEN KNOWLEDGE GmbH
 
[drupalday2017] - Drupal come frontend che consuma servizi: HTTP Client Manager
[drupalday2017] - Drupal come frontend che consuma servizi: HTTP Client Manager[drupalday2017] - Drupal come frontend che consuma servizi: HTTP Client Manager
[drupalday2017] - Drupal come frontend che consuma servizi: HTTP Client ManagerDrupalDay
 
Building a Single Page Application using Ember.js ... for fun and profit
Building a Single Page Application using Ember.js ... for fun and profitBuilding a Single Page Application using Ember.js ... for fun and profit
Building a Single Page Application using Ember.js ... for fun and profitBen Limmer
 

Similar to Winning the Application Server Arms Race (20)

The Future of Progressive Web Apps - View Source conference, Berlin 2016
The Future of Progressive Web Apps - View Source conference, Berlin 2016The Future of Progressive Web Apps - View Source conference, Berlin 2016
The Future of Progressive Web Apps - View Source conference, Berlin 2016
 
SenchaCon 2016: A Look Ahead: Survey Next-Gen Modern Browser APIs - Shikhir S...
SenchaCon 2016: A Look Ahead: Survey Next-Gen Modern Browser APIs - Shikhir S...SenchaCon 2016: A Look Ahead: Survey Next-Gen Modern Browser APIs - Shikhir S...
SenchaCon 2016: A Look Ahead: Survey Next-Gen Modern Browser APIs - Shikhir S...
 
Web I - 04 - Forms
Web I - 04 - FormsWeb I - 04 - Forms
Web I - 04 - Forms
 
SRV418 Deep Dive on Accelerating Content, APIs, and Applications with Amazon ...
SRV418 Deep Dive on Accelerating Content, APIs, and Applications with Amazon ...SRV418 Deep Dive on Accelerating Content, APIs, and Applications with Amazon ...
SRV418 Deep Dive on Accelerating Content, APIs, and Applications with Amazon ...
 
Building Advanced Serverless Applications
Building Advanced Serverless ApplicationsBuilding Advanced Serverless Applications
Building Advanced Serverless Applications
 
The Future of the Web - Cold Front conference 2016
The Future of the Web - Cold Front conference 2016The Future of the Web - Cold Front conference 2016
The Future of the Web - Cold Front conference 2016
 
Payments On Rails
Payments On RailsPayments On Rails
Payments On Rails
 
cross-platform-assets-based-front-end-architecture
cross-platform-assets-based-front-end-architecturecross-platform-assets-based-front-end-architecture
cross-platform-assets-based-front-end-architecture
 
08 ajax
08 ajax08 ajax
08 ajax
 
Implementation of GUI Framework part3
Implementation of GUI Framework part3Implementation of GUI Framework part3
Implementation of GUI Framework part3
 
First impression of the new cloud native programming language ballerina
First impression of the new cloud native programming language ballerinaFirst impression of the new cloud native programming language ballerina
First impression of the new cloud native programming language ballerina
 
Web services intro.
Web services intro.Web services intro.
Web services intro.
 
Distributed Parcel Tracking/Management System Overview
Distributed Parcel Tracking/Management System OverviewDistributed Parcel Tracking/Management System Overview
Distributed Parcel Tracking/Management System Overview
 
AWS Step Functions을 활용한 서버리스 앱 오케스트레이션
AWS Step Functions을 활용한 서버리스 앱 오케스트레이션AWS Step Functions을 활용한 서버리스 앱 오케스트레이션
AWS Step Functions을 활용한 서버리스 앱 오케스트레이션
 
MongoDB.local Berlin: App development in a Serverless World
MongoDB.local Berlin: App development in a Serverless WorldMongoDB.local Berlin: App development in a Serverless World
MongoDB.local Berlin: App development in a Serverless World
 
Introduction ASP
Introduction ASPIntroduction ASP
Introduction ASP
 
Clean up this mess - API Gateway & Service Discovery in .NET
Clean up this mess - API Gateway & Service Discovery in .NETClean up this mess - API Gateway & Service Discovery in .NET
Clean up this mess - API Gateway & Service Discovery in .NET
 
Hilfe, wir brauchen ein Frontend
Hilfe, wir brauchen ein FrontendHilfe, wir brauchen ein Frontend
Hilfe, wir brauchen ein Frontend
 
[drupalday2017] - Drupal come frontend che consuma servizi: HTTP Client Manager
[drupalday2017] - Drupal come frontend che consuma servizi: HTTP Client Manager[drupalday2017] - Drupal come frontend che consuma servizi: HTTP Client Manager
[drupalday2017] - Drupal come frontend che consuma servizi: HTTP Client Manager
 
Building a Single Page Application using Ember.js ... for fun and profit
Building a Single Page Application using Ember.js ... for fun and profitBuilding a Single Page Application using Ember.js ... for fun and profit
Building a Single Page Application using Ember.js ... for fun and profit
 

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

"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
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
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
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
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 

Recently uploaded (20)

"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
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
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
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
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 

Winning the Application Server Arms Race