SlideShare a Scribd company logo
1 of 11
Download to read offline
eXtremeMetaProgrammers
ESUG 2004
XMP/kapital/pres/0006/1.1
The Value of Smalltalk
eXtremeMetaProgrammers
XMP
Slide No: 1 — September 2004
Niall Ross, Colin Lewis
The Value of Smalltalk: valuing and risk
management in VisualWorks and GemStone
Version 1.1: conference talk
Colin Lewis, JPMorgan Chase
Niall Ross, eXtremeMetaProgrammers
nfr@bigwig.net colin.t.lewis@jpmorgan.com
These are the slides of the talk presented by Niall Ross at ESUG 2004 in Kothen, September 6th-10th, 2004.
eXtremeMetaProgrammers
ESUG 2004
XMP/kapital/pres/0006/1.1
The Value of Smalltalk
eXtremeMetaProgrammers
XMP
Slide No: 2 — September 2004
Niall Ross, Colin Lewis
Overview
• Kapital Overview
— Domain and Use
• How VisualWorks and GemStone deliver Business Value
— Actual Delivery
— Rapid Delivery
— Scalability
— Reengineering
— Migration
• Ongoing Issues
• Discussion
eXtremeMetaProgrammers
ESUG 2004
XMP/kapital/pres/0006/1.1
The Value of Smalltalk
eXtremeMetaProgrammers
XMP
Slide No: 3 — September 2004
Niall Ross, Colin Lewis
Kapital: a hard problem
Kapital values and risk-manages a wide range of complex financial products.
• Commoditised vanilla trades: margin is in volume
• New really complex products: margin is in being the first to handle them
You dare not sell or buy what you cannot price. You dare not hold what you cannot risk-
manage. The capacity of your system for doing this determines your volume.
Kapital’s goal: “The ease of a spreadsheet with the scalability of a system”
Kapital is used in three modes
• batch: overnight, batches value all traders’ books against immense range of conditions
— derive map of possible risks
• interactive: businesses manage their trades, value fresh trades, ...
• housekeeping: weekend runs clean data, archive, verify, do sanity checks
Kapital has 60+ in team and more than 500 end-users on 7 sites.
The enabler of $Large pa revenues for the Investment Bank.
eXtremeMetaProgrammers
ESUG 2004
XMP/kapital/pres/0006/1.1
The Value of Smalltalk
eXtremeMetaProgrammers
XMP
Slide No: 4 — September 2004
Niall Ross, Colin Lewis
The Value of Smalltalk: actual delivery
Kapital’s domain (and our understanding of it) changes: needs dynamic domain models.
• Infrastructure meta-model: graphs, closures, references
— financial developers don’t have to worry about persistence
— all objects can walk their graph to assure data integrity, audit, ...
— behaviour in both VW and GemStone
• Financial meta-model: markets, trades, cash streams, ...
— all financial objects can “mark to market” (i.e. value) themselves
— all financial objects can walk their graph to explain their values, ...
— domain behaviour in VW only: GemStone is a virtual memory extension
It took 1.5 years to get these meta-models right. It was so worth it.
“New financial developers find the ease of the persistence framework unbelievable.”
Meta-modelling is so easy in Smalltalk - that you can deliver.
eXtremeMetaProgrammers
ESUG 2004
XMP/kapital/pres/0006/1.1
The Value of Smalltalk
eXtremeMetaProgrammers
XMP
Slide No: 5 — September 2004
Niall Ross, Colin Lewis
Kapital: modelling the domain
Standard Smalltalk meta-modelling approach: classInstVar ‘meta’ holds slotDefs, etc.
• Mix and match what is done
by Smalltalk classes and what
by ‘meta’ objects
— fine-grained refactoring
between them as Kapital
developed
• Easy to integrate specific
methods with generic graph-
walking methods
— no type-system obstacles
to refactoring between
code and ‘meta’-code1
• Tool reuse / refactoring
Smalltalk exposes its meta-model: everything is an object, few reserved words.
1. See Niall Ross’ talk at ESUG99 for detailed analysis of this issue.
eXtremeMetaProgrammers
ESUG 2004
XMP/kapital/pres/0006/1.1
The Value of Smalltalk
eXtremeMetaProgrammers
XMP
Slide No: 6 — September 2004
Niall Ross, Colin Lewis
The Value of Smalltalk: rapid delivery
Kapital survived DarkPlace Dogytalk, GemStone’s Brokat phase and mergers because:
• can mould it to do what users actually want in volumes they cannot handle elsewhere
• frequent prototype demos: ST lets us change things in front of users as we demo
Example
Not so long ago, a new financial product appeared and was very popular in the markets.
• Every client of every investment bank asked for quotes for it
• For a key period of high market activity, only JPMorgan Chase quoted for them
— competitors worried existing systems could not risk-manage volume new business
JPMC gained the business, the clients and the premium for being only one to quote.
• Later
— (we believe) competitors used many extra staff and spreadsheets to support volume
— New product added minimal performance and maintenance costs to Kapital
JPMC kept lower overheads and freedom of action (opportunity cost).
eXtremeMetaProgrammers
ESUG 2004
XMP/kapital/pres/0006/1.1
The Value of Smalltalk
eXtremeMetaProgrammers
XMP
Slide No: 7 — September 2004
Niall Ross, Colin Lewis
The Value of Smalltalk: scalability
Visibility is key for scalability: see true bottlenecks in production state.
• Unlike typical systems of this size (14,000+ classes), Kapital is not stripped at delivery.
— A given release image has the same codebase across all sites and businesses
— Production images have (hidden) development tools
• Distribution architecture of Client, Agent and Resource Manager images
— Agents do calculations, Clients task agents and persist results, RMs start images
— Configurations for how clients group tasks for agents: major performance effects
— Stressed DST more than anyone else: vendor fed our fixes back into product
Common code base and Smalltalk’s dynamic features let us study bottlenecks.
Examples
Kapital has overcome one performance threshold after another as it has grown.
• fixed ‘Friday slowdown’: could never have guessed cause; had to see it.
• on-boarded Credit Hybrid derivatives, wholly new business, faster than competitors
• switched from SMP to blade technology in six months: Smalltalk is easy to move
eXtremeMetaProgrammers
ESUG 2004
XMP/kapital/pres/0006/1.1
The Value of Smalltalk
eXtremeMetaProgrammers
XMP
Slide No: 8 — September 2004
Niall Ross, Colin Lewis
The Value of Smalltalk: reengineering
Fine-grained access is key to reengineering; you can get at so much in VW and GemStone.
Example Background
Concurrent systems need canonical (i.e. unique) objects. Kapital DBs store their unique
graph roots in a performant symbol-keyed cache, each image loading what it needs.
Dates: saving many copies of the same date bloats DBs. Kapital was reengineered to synch
image date with unique DB date lazily. (Others do this too, e.g. Joe Bacanskas at WMB.)
Example
Kapital started with 200 financial time-series objects (‘curves’), now uses 70,000
• retrieving their keys (‘curve descriptors’) began to slow an important UI operation
Reengineered to use date-style lazy synchronisation for curve descriptors
Derived Descriptors:
• slow and costly to gather data for certain curves
— new theory: can derive all such curves from a few base curves
Needed curve descriptors created on the fly. Reengineered to do lazy synch or save.
eXtremeMetaProgrammers
ESUG 2004
XMP/kapital/pres/0006/1.1
The Value of Smalltalk
eXtremeMetaProgrammers
XMP
Slide No: 9 — September 2004
Niall Ross, Colin Lewis
The Value of Smalltalk: data migration
The persistence framework is integrated with the mutation (data migration) framework.
• data is lazily ‘mutated’ as it is loaded into an image, thus migrated if saved
• for some changes, one must write #upgrade methods for classes
• an amazing amount happens automatically
Kapital’s schema keeps evolving to keep pace with the market.
• Key financial objects: migrated on each release for all production databases
• other data: lazily mutated if loaded
Thus
• developers can run the latest codebase against copies of production databases without
having to upgrade everything
• data upgrade on release takes less time
Corollary: in GemStone, selected classes (backport classes) push method changes to their
previous versions, so only structural changes to such classes force migration.
eXtremeMetaProgrammers
ESUG 2004
XMP/kapital/pres/0006/1.1
The Value of Smalltalk
eXtremeMetaProgrammers
XMP
Slide No: 10 — September 2004
Niall Ross, Colin Lewis
Ongoing Issues
Things we would like to do better
• Performant ‘meta’-enabled collection classes
— at the moment, we clone them :-/)
• Eliminate dead code
— rate of business change means 90Mb image might now have 20Mb dead-code
— ongoing work on static and dynamic dead code detection and deletion
• Eliminate dead data
— GS object table can be 2 Gig; occupies whole shared cache
— ongoing work to remove unneeded objects in DB (‘dark matter’)
– approach is to copy needed to new DB, not hunt unneeded in old DB
• Enforce good coding patterns: we have superb code and not-so-superb code
eXtremeMetaProgrammers
ESUG 2004
XMP/kapital/pres/0006/1.1
The Value of Smalltalk
eXtremeMetaProgrammers
XMP
Slide No: 11 — September 2004
Niall Ross, Colin Lewis
Discussion
More info on Kapital:
• notes for talk: http://www.whysmalltalk.com/events/nfrESUG2004report.pdf, page 33
• Cincom Smalltalk success stories: www.cincom.com/pdf/CS040819-1.pdf
• https://secure.cwheroes.org/briefingroom_2004/pdf_frame/index.asp?id=4909
• https://secure.cwheroes.org/briefingroom_2004/pdf_frame/press.asp?id=4909

More Related Content

Similar to The Value of Smalltalk

Testing for Real
Testing for RealTesting for Real
Testing for RealESUG
 
Java in the age of containers - JUG Frankfurt/M
Java in the age of containers - JUG Frankfurt/MJava in the age of containers - JUG Frankfurt/M
Java in the age of containers - JUG Frankfurt/MMarkus Eisele
 
Java in the Age of Containers and Serverless
Java in the Age of Containers and ServerlessJava in the Age of Containers and Serverless
Java in the Age of Containers and ServerlessMarkus Eisele
 
Model Execution: Past, Present and Future
Model Execution: Past, Present and FutureModel Execution: Past, Present and Future
Model Execution: Past, Present and FutureBenoit Combemale
 
Is OLAP Dead?: Can Next Gen Tools Take Over?
Is OLAP Dead?: Can Next Gen Tools Take Over?Is OLAP Dead?: Can Next Gen Tools Take Over?
Is OLAP Dead?: Can Next Gen Tools Take Over?Senturus
 
John Thomas 2010
John Thomas 2010John Thomas 2010
John Thomas 2010John Thomas
 
GE Capital Legacy Modernization and Mainframe Conversion
GE Capital Legacy Modernization and Mainframe ConversionGE Capital Legacy Modernization and Mainframe Conversion
GE Capital Legacy Modernization and Mainframe Conversionguatham
 
Tim Jones – CTO, Trader Media
Tim Jones – CTO, Trader MediaTim Jones – CTO, Trader Media
Tim Jones – CTO, Trader MediaRightScale
 
VinitKumarMaurya_MaximoModuleLead_5.5Yrs
VinitKumarMaurya_MaximoModuleLead_5.5YrsVinitKumarMaurya_MaximoModuleLead_5.5Yrs
VinitKumarMaurya_MaximoModuleLead_5.5YrsVinit Maurya
 
Andrii Sliusar "Module Architecture of React-Redux Applications"
Andrii Sliusar "Module Architecture of React-Redux Applications"Andrii Sliusar "Module Architecture of React-Redux Applications"
Andrii Sliusar "Module Architecture of React-Redux Applications"LogeekNightUkraine
 
Open Source North - MongoDB Advanced Schema Design Patterns
Open Source North - MongoDB Advanced Schema Design PatternsOpen Source North - MongoDB Advanced Schema Design Patterns
Open Source North - MongoDB Advanced Schema Design PatternsMatthew Kalan
 
The Emergence of DeFi Micro-Primitives
The Emergence of DeFi Micro-PrimitivesThe Emergence of DeFi Micro-Primitives
The Emergence of DeFi Micro-PrimitivesJesus Rodriguez
 
AppNexus' First Pitch Deck
AppNexus' First Pitch DeckAppNexus' First Pitch Deck
AppNexus' First Pitch DeckCamille Ricketts
 
First Round First Pitch: AppNexus
First Round First Pitch: AppNexusFirst Round First Pitch: AppNexus
First Round First Pitch: AppNexusFirst Round Capital
 
Alok_ResumeHclJul
Alok_ResumeHclJulAlok_ResumeHclJul
Alok_ResumeHclJulAlok Behera
 
TIBCO vs MuleSoft Differentiators
TIBCO vs MuleSoft DifferentiatorsTIBCO vs MuleSoft Differentiators
TIBCO vs MuleSoft DifferentiatorsSatish Nannapaneni
 

Similar to The Value of Smalltalk (20)

Testing for Real
Testing for RealTesting for Real
Testing for Real
 
Java in the age of containers - JUG Frankfurt/M
Java in the age of containers - JUG Frankfurt/MJava in the age of containers - JUG Frankfurt/M
Java in the age of containers - JUG Frankfurt/M
 
Java in the Age of Containers and Serverless
Java in the Age of Containers and ServerlessJava in the Age of Containers and Serverless
Java in the Age of Containers and Serverless
 
Model Execution: Past, Present and Future
Model Execution: Past, Present and FutureModel Execution: Past, Present and Future
Model Execution: Past, Present and Future
 
Remus_3_0
Remus_3_0Remus_3_0
Remus_3_0
 
Is OLAP Dead?: Can Next Gen Tools Take Over?
Is OLAP Dead?: Can Next Gen Tools Take Over?Is OLAP Dead?: Can Next Gen Tools Take Over?
Is OLAP Dead?: Can Next Gen Tools Take Over?
 
APEKSHA_SHRIVASTAVA
APEKSHA_SHRIVASTAVAAPEKSHA_SHRIVASTAVA
APEKSHA_SHRIVASTAVA
 
John Thomas 2010
John Thomas 2010John Thomas 2010
John Thomas 2010
 
GE Capital Legacy Modernization and Mainframe Conversion
GE Capital Legacy Modernization and Mainframe ConversionGE Capital Legacy Modernization and Mainframe Conversion
GE Capital Legacy Modernization and Mainframe Conversion
 
Tim Jones – CTO, Trader Media
Tim Jones – CTO, Trader MediaTim Jones – CTO, Trader Media
Tim Jones – CTO, Trader Media
 
smrutikanta jena
smrutikanta jenasmrutikanta jena
smrutikanta jena
 
VinitKumarMaurya_MaximoModuleLead_5.5Yrs
VinitKumarMaurya_MaximoModuleLead_5.5YrsVinitKumarMaurya_MaximoModuleLead_5.5Yrs
VinitKumarMaurya_MaximoModuleLead_5.5Yrs
 
Andrii Sliusar "Module Architecture of React-Redux Applications"
Andrii Sliusar "Module Architecture of React-Redux Applications"Andrii Sliusar "Module Architecture of React-Redux Applications"
Andrii Sliusar "Module Architecture of React-Redux Applications"
 
Open Source North - MongoDB Advanced Schema Design Patterns
Open Source North - MongoDB Advanced Schema Design PatternsOpen Source North - MongoDB Advanced Schema Design Patterns
Open Source North - MongoDB Advanced Schema Design Patterns
 
The Emergence of DeFi Micro-Primitives
The Emergence of DeFi Micro-PrimitivesThe Emergence of DeFi Micro-Primitives
The Emergence of DeFi Micro-Primitives
 
AppNexus' First Pitch Deck
AppNexus' First Pitch DeckAppNexus' First Pitch Deck
AppNexus' First Pitch Deck
 
First Round First Pitch: AppNexus
First Round First Pitch: AppNexusFirst Round First Pitch: AppNexus
First Round First Pitch: AppNexus
 
Appnexus
AppnexusAppnexus
Appnexus
 
Alok_ResumeHclJul
Alok_ResumeHclJulAlok_ResumeHclJul
Alok_ResumeHclJul
 
TIBCO vs MuleSoft Differentiators
TIBCO vs MuleSoft DifferentiatorsTIBCO vs MuleSoft Differentiators
TIBCO vs MuleSoft Differentiators
 

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

Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 

Recently uploaded (20)

Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 

The Value of Smalltalk

  • 1. eXtremeMetaProgrammers ESUG 2004 XMP/kapital/pres/0006/1.1 The Value of Smalltalk eXtremeMetaProgrammers XMP Slide No: 1 — September 2004 Niall Ross, Colin Lewis The Value of Smalltalk: valuing and risk management in VisualWorks and GemStone Version 1.1: conference talk Colin Lewis, JPMorgan Chase Niall Ross, eXtremeMetaProgrammers nfr@bigwig.net colin.t.lewis@jpmorgan.com These are the slides of the talk presented by Niall Ross at ESUG 2004 in Kothen, September 6th-10th, 2004.
  • 2. eXtremeMetaProgrammers ESUG 2004 XMP/kapital/pres/0006/1.1 The Value of Smalltalk eXtremeMetaProgrammers XMP Slide No: 2 — September 2004 Niall Ross, Colin Lewis Overview • Kapital Overview — Domain and Use • How VisualWorks and GemStone deliver Business Value — Actual Delivery — Rapid Delivery — Scalability — Reengineering — Migration • Ongoing Issues • Discussion
  • 3. eXtremeMetaProgrammers ESUG 2004 XMP/kapital/pres/0006/1.1 The Value of Smalltalk eXtremeMetaProgrammers XMP Slide No: 3 — September 2004 Niall Ross, Colin Lewis Kapital: a hard problem Kapital values and risk-manages a wide range of complex financial products. • Commoditised vanilla trades: margin is in volume • New really complex products: margin is in being the first to handle them You dare not sell or buy what you cannot price. You dare not hold what you cannot risk- manage. The capacity of your system for doing this determines your volume. Kapital’s goal: “The ease of a spreadsheet with the scalability of a system” Kapital is used in three modes • batch: overnight, batches value all traders’ books against immense range of conditions — derive map of possible risks • interactive: businesses manage their trades, value fresh trades, ... • housekeeping: weekend runs clean data, archive, verify, do sanity checks Kapital has 60+ in team and more than 500 end-users on 7 sites. The enabler of $Large pa revenues for the Investment Bank.
  • 4. eXtremeMetaProgrammers ESUG 2004 XMP/kapital/pres/0006/1.1 The Value of Smalltalk eXtremeMetaProgrammers XMP Slide No: 4 — September 2004 Niall Ross, Colin Lewis The Value of Smalltalk: actual delivery Kapital’s domain (and our understanding of it) changes: needs dynamic domain models. • Infrastructure meta-model: graphs, closures, references — financial developers don’t have to worry about persistence — all objects can walk their graph to assure data integrity, audit, ... — behaviour in both VW and GemStone • Financial meta-model: markets, trades, cash streams, ... — all financial objects can “mark to market” (i.e. value) themselves — all financial objects can walk their graph to explain their values, ... — domain behaviour in VW only: GemStone is a virtual memory extension It took 1.5 years to get these meta-models right. It was so worth it. “New financial developers find the ease of the persistence framework unbelievable.” Meta-modelling is so easy in Smalltalk - that you can deliver.
  • 5. eXtremeMetaProgrammers ESUG 2004 XMP/kapital/pres/0006/1.1 The Value of Smalltalk eXtremeMetaProgrammers XMP Slide No: 5 — September 2004 Niall Ross, Colin Lewis Kapital: modelling the domain Standard Smalltalk meta-modelling approach: classInstVar ‘meta’ holds slotDefs, etc. • Mix and match what is done by Smalltalk classes and what by ‘meta’ objects — fine-grained refactoring between them as Kapital developed • Easy to integrate specific methods with generic graph- walking methods — no type-system obstacles to refactoring between code and ‘meta’-code1 • Tool reuse / refactoring Smalltalk exposes its meta-model: everything is an object, few reserved words. 1. See Niall Ross’ talk at ESUG99 for detailed analysis of this issue.
  • 6. eXtremeMetaProgrammers ESUG 2004 XMP/kapital/pres/0006/1.1 The Value of Smalltalk eXtremeMetaProgrammers XMP Slide No: 6 — September 2004 Niall Ross, Colin Lewis The Value of Smalltalk: rapid delivery Kapital survived DarkPlace Dogytalk, GemStone’s Brokat phase and mergers because: • can mould it to do what users actually want in volumes they cannot handle elsewhere • frequent prototype demos: ST lets us change things in front of users as we demo Example Not so long ago, a new financial product appeared and was very popular in the markets. • Every client of every investment bank asked for quotes for it • For a key period of high market activity, only JPMorgan Chase quoted for them — competitors worried existing systems could not risk-manage volume new business JPMC gained the business, the clients and the premium for being only one to quote. • Later — (we believe) competitors used many extra staff and spreadsheets to support volume — New product added minimal performance and maintenance costs to Kapital JPMC kept lower overheads and freedom of action (opportunity cost).
  • 7. eXtremeMetaProgrammers ESUG 2004 XMP/kapital/pres/0006/1.1 The Value of Smalltalk eXtremeMetaProgrammers XMP Slide No: 7 — September 2004 Niall Ross, Colin Lewis The Value of Smalltalk: scalability Visibility is key for scalability: see true bottlenecks in production state. • Unlike typical systems of this size (14,000+ classes), Kapital is not stripped at delivery. — A given release image has the same codebase across all sites and businesses — Production images have (hidden) development tools • Distribution architecture of Client, Agent and Resource Manager images — Agents do calculations, Clients task agents and persist results, RMs start images — Configurations for how clients group tasks for agents: major performance effects — Stressed DST more than anyone else: vendor fed our fixes back into product Common code base and Smalltalk’s dynamic features let us study bottlenecks. Examples Kapital has overcome one performance threshold after another as it has grown. • fixed ‘Friday slowdown’: could never have guessed cause; had to see it. • on-boarded Credit Hybrid derivatives, wholly new business, faster than competitors • switched from SMP to blade technology in six months: Smalltalk is easy to move
  • 8. eXtremeMetaProgrammers ESUG 2004 XMP/kapital/pres/0006/1.1 The Value of Smalltalk eXtremeMetaProgrammers XMP Slide No: 8 — September 2004 Niall Ross, Colin Lewis The Value of Smalltalk: reengineering Fine-grained access is key to reengineering; you can get at so much in VW and GemStone. Example Background Concurrent systems need canonical (i.e. unique) objects. Kapital DBs store their unique graph roots in a performant symbol-keyed cache, each image loading what it needs. Dates: saving many copies of the same date bloats DBs. Kapital was reengineered to synch image date with unique DB date lazily. (Others do this too, e.g. Joe Bacanskas at WMB.) Example Kapital started with 200 financial time-series objects (‘curves’), now uses 70,000 • retrieving their keys (‘curve descriptors’) began to slow an important UI operation Reengineered to use date-style lazy synchronisation for curve descriptors Derived Descriptors: • slow and costly to gather data for certain curves — new theory: can derive all such curves from a few base curves Needed curve descriptors created on the fly. Reengineered to do lazy synch or save.
  • 9. eXtremeMetaProgrammers ESUG 2004 XMP/kapital/pres/0006/1.1 The Value of Smalltalk eXtremeMetaProgrammers XMP Slide No: 9 — September 2004 Niall Ross, Colin Lewis The Value of Smalltalk: data migration The persistence framework is integrated with the mutation (data migration) framework. • data is lazily ‘mutated’ as it is loaded into an image, thus migrated if saved • for some changes, one must write #upgrade methods for classes • an amazing amount happens automatically Kapital’s schema keeps evolving to keep pace with the market. • Key financial objects: migrated on each release for all production databases • other data: lazily mutated if loaded Thus • developers can run the latest codebase against copies of production databases without having to upgrade everything • data upgrade on release takes less time Corollary: in GemStone, selected classes (backport classes) push method changes to their previous versions, so only structural changes to such classes force migration.
  • 10. eXtremeMetaProgrammers ESUG 2004 XMP/kapital/pres/0006/1.1 The Value of Smalltalk eXtremeMetaProgrammers XMP Slide No: 10 — September 2004 Niall Ross, Colin Lewis Ongoing Issues Things we would like to do better • Performant ‘meta’-enabled collection classes — at the moment, we clone them :-/) • Eliminate dead code — rate of business change means 90Mb image might now have 20Mb dead-code — ongoing work on static and dynamic dead code detection and deletion • Eliminate dead data — GS object table can be 2 Gig; occupies whole shared cache — ongoing work to remove unneeded objects in DB (‘dark matter’) – approach is to copy needed to new DB, not hunt unneeded in old DB • Enforce good coding patterns: we have superb code and not-so-superb code
  • 11. eXtremeMetaProgrammers ESUG 2004 XMP/kapital/pres/0006/1.1 The Value of Smalltalk eXtremeMetaProgrammers XMP Slide No: 11 — September 2004 Niall Ross, Colin Lewis Discussion More info on Kapital: • notes for talk: http://www.whysmalltalk.com/events/nfrESUG2004report.pdf, page 33 • Cincom Smalltalk success stories: www.cincom.com/pdf/CS040819-1.pdf • https://secure.cwheroes.org/briefingroom_2004/pdf_frame/index.asp?id=4909 • https://secure.cwheroes.org/briefingroom_2004/pdf_frame/press.asp?id=4909