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

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
 
Krestianstvo
KrestianstvoKrestianstvo
Krestianstvo
ESUG
 
Para ANAIS
Para ANAISPara ANAIS
Para ANAIS
chp
 
Tegnologia aplicada
Tegnologia  aplicadaTegnologia  aplicada
Tegnologia aplicada
marlencuesta
 

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

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 programming
ESUG
 
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
ESUG
 
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 results
ESUG
 
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
ESUG
 
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
ESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating 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 ModesThreaded-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 ReportExploring 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 APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
ESUG
 
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
ESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
ESUG
 
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
ESUG
 

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

Recently uploaded (20)

Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
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
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
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...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
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
 
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
 
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
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 

Winning the Application Server Arms Race