SlideShare una empresa de Scribd logo
1 de 93
Descargar para leer sin conexión
Letting Smalltalk Loose

         Jorge Ressia

       www.scg.unibe.ch
Computer
revolution has not
  happened yet
Computer
revolution has not
  happened yet
                  Kay997
             Alan PSLA 1
                      O
            Keynote O
improve previous
 ways of thinking
create new
ways of thinking
Object-oriented
 Programming
Dynamic
We still go back to
 the source code
Debugging
{               {
    {                   {
                            }
        }
        }
            }       {       }
{               {
    {                   {
                            }
        }
        }
            }       {       }
{               {
    {                   {
                            }
        }
        }
            }       {       }
{               {
    {                   {
                            }
        }
        }
            }       {       }
{               {
    {                   {
                            }
        }
        }
            }       {       }
{               {
    {                   {
                            }
        }
        }
            }       {       }
{               {
    {                   {
                            }
        }
        }
            }       {       }
Profiling
Domain-Sp

                                         CPU time profiling
                                         Mondrian [9] is an open and agile visualization engine.
                                         visualization using a graph of (possibly nested) nodes an




                                Profile
                                         a serious performance issue was raised1 . Tracking down
                                         performance was not trivial. We first used a standard sam
                                              Execution sampling approximates the time spent in an
                                         by periodically stopping a program and recording the cu
                                         under executions. Such a profiling technique is relatively
                                         little impact on the overall execution. This sampling techn
                                         all mainstream profilers, such as JProfiler, YourKit, xprof
                                              MessageTally, the standard sampling-based profiler in P
                                         tually describes the execution in terms of CPU consumpt
                                         each method of Mondrian:
                                         54.8% {11501ms} MOCanvas>>drawOn:
                                          54.8% {11501ms} MORoot(MONode)>>displayOn:
                                           30.9% {6485ms} MONode>>displayOn:
{               {                            | 18.1% {3799ms} MOEdge>>displayOn:
    {                   {                       ...
                            }                | 8.4% {1763ms} MOEdge>>displayOn:
        }
        }
                                             | | 8.0% {1679ms} MOStraightLineShape>>display:on:
                                             | | 2.6% {546ms} FormCanvas>>line:to:width:color:
            }       {       }                  ...
                                           23.4% {4911ms} MOEdge>>displayOn:
                                               ...

                                            We can observe that the virtual machine spent abou
                                         the method displayOn: defined in the class MORoot. A ro
                                         nested node that contains all the nodes of the edges of t
                                         general profiling information says that rendering nodes a
                                         great share of the CPU time, but it does not help in pin
                                         and edges are responsible for the time spent. Not all grap
                                         consume resources.
                                            Traditional execution sampling profilers center their r
                                         the execution stack and completely ignore the identity of th
                                         the method call and its arguments. As a consequence, it
                                         which objects cause the slowdown. For the example above,
                                         says that we spent 30.9% in MONode>>displayOn: withou
                                         were actually refreshed too often.

                                         Coverage
                                         PetitParser is a parsing framework combining ideas from
                                         parser combinators, parsing expression grammars and pac
                                         grammars and parsers as objects that can be reconfigured
CPU time profiling
                                         Mondrian [9] is an open and agile visualization engine.




                                Profile
                                         visualization using a graph of (possibly nested) nodes an
                                         a serious performance issue was raised1 . Tracking down
                                         performance was not trivial. We first used a standard sam
                                              Execution sampling approximates the time spent in an
                                         by periodically stopping a program and recording the cu
                                         under executions. Such a profiling technique is relatively
                                         little impact on the overall execution. This sampling techn
                                         all mainstream profilers, such as JProfiler, YourKit, xprof
                                              MessageTally, the standard sampling-based profiler in P
                                         tually describes the execution in terms of CPU consumpt
                                         each method of Mondrian:
                                         54.8% {11501ms} MOCanvas>>drawOn:
                                          54.8% {11501ms} MORoot(MONode)>>displayOn:
{               {                          30.9% {6485ms} MONode>>displayOn:
    {                   {                    | 18.1% {3799ms} MOEdge>>displayOn:
                            }                   ...
        }
        }                                    | 8.4% {1763ms} MOEdge>>displayOn:
                                             | | 8.0% {1679ms} MOStraightLineShape>>display:on:
            }       {       }                | | 2.6% {546ms} FormCanvas>>line:to:width:color:
                                               ...
                                           23.4% {4911ms} MOEdge>>displayOn:
                                               ...

                                            We can observe that the virtual machine spent abou
                                         the method displayOn: defined in the class MORoot. A ro
                                         nested node that contains all the nodes of the edges of t
                                         general profiling information says that rendering nodes a
                                         great share of the CPU time, but it does not help in pin
                                         and edges are responsible for the time spent. Not all grap
                                         consume resources.
                                            Traditional execution sampling profilers center their r
                                         the execution stack and completely ignore the identity of th
                                         the method call and its arguments. As a consequence, it
                                         which objects cause the slowdown. For the example above,
                                         says that we spent 30.9% in MONode>>displayOn: withou
                                         were actually refreshed too often.




                                Domain
                                         Coverage
                                         PetitParser is a parsing framework combining ideas from
                                         parser combinators, parsing expression grammars and pac
                                         grammars and parsers as objects that can be reconfigured
                                         1
                                             http://forum.world.st/Mondrian-is-slow-next-step-tc
                                             a2261116
                                         2
                                             http://www.pharo-project.org/
Mondrian
C omp lexity
  stemand Ducasse 2003
Sy zaLan
little impact on the overall execution. This sampling technique is u
all mainstream profilers, such as JProfiler, YourKit, xprof [10], an
     MessageTally, the standard sampling-based profiler in Pharo Sm
tually describes the execution in terms of CPU consumption and i
each method of Mondrian:
54.8% {11501ms} MOCanvas>>drawOn:
 54.8% {11501ms} MORoot(MONode)>>displayOn:
  30.9% {6485ms} MONode>>displayOn:
    | 18.1% {3799ms} MOEdge>>displayOn:
       ...
    | 8.4% {1763ms} MOEdge>>displayOn:
    | | 8.0% {1679ms} MOStraightLineShape>>display:on:
    | | 2.6% {546ms} FormCanvas>>line:to:width:color:
      ...
  23.4% {4911ms} MOEdge>>displayOn:
      ...

   We can observe that the virtual machine spent about 54% o
the method displayOn: defined in the class MORoot. A root is the
nested node that contains all the nodes of the edges of the visua
general profiling information says that rendering nodes and edge
Domain-Specific Profiling        3

CPU time profiling

                            Which is the relationship?
Mondrian [9] is an open and agile visualization engine. Mondrian describes a
visualization using a graph of (possibly nested) nodes and edges. In June 2010
a serious performance issue was raised1 . Tracking down the cause of the poor
performance was not trivial. We first used a standard sample-based profiler.
     Execution sampling approximates the time spent in an application’s methods
by periodically stopping a program and recording the current set of methods
under executions. Such a profiling technique is relatively accurate since it has
little impact on the overall execution. This sampling technique is used by almost
all mainstream profilers, such as JProfiler, YourKit, xprof [10], and hprof.
     MessageTally, the standard sampling-based profiler in Pharo Smalltalk2 , tex-
tually describes the execution in terms of CPU consumption and invocation for
each method of Mondrian:
54.8% {11501ms} MOCanvas>>drawOn:
 54.8% {11501ms} MORoot(MONode)>>displayOn:
  30.9% {6485ms} MONode>>displayOn:




                                                                    ?
    | 18.1% {3799ms} MOEdge>>displayOn:
       ...
    | 8.4% {1763ms} MOEdge>>displayOn:
    | | 8.0% {1679ms} MOStraightLineShape>>display:on:
    | | 2.6% {546ms} FormCanvas>>line:to:width:color:
      ...
  23.4% {4911ms} MOEdge>>displayOn:
      ...

   We can observe that the virtual machine spent about 54% of its time in
the method displayOn: defined in the class MORoot. A root is the unique non-
nested node that contains all the nodes of the edges of the visualization. This
general profiling information says that rendering nodes and edges consumes a
great share of the CPU time, but it does not help in pinpointing which nodes
and edges are responsible for the time spent. Not all graphical elements equally
consume resources.
   Traditional execution sampling profilers center their result on the frames of
the execution stack and completely ignore the identity of the object that received
the method call and its arguments. As a consequence, it is hard to track down
which objects cause the slowdown. For the example above, the traditional profiler
says that we spent 30.9% in MONode>>displayOn: without saying which nodes
were actually refreshed too often.

Coverage
PetitParser is a parsing framework combining ideas from scannerless parsing,
What is the
problem?
Fixed Object Model
Most of the time
 this is good
Restricts what we
     can do
Time
Time is a very useful
      concept
considering it
absolute limit us
absolute object
 model limit us
objects that evolve
Why?
Debugging    Profiling




Execution    Structure
Reification   Evolution
Debugging    Profiling




Execution    Structure
Reification   Evolution
{               {
    {                   {
                            }
        }
        }
            }       {       }
{               {
    {                   {
                            }
        }
        }
            }       {       }
When is the next
 state written?
Stop when the next
message is received
Close the gap
Object Debugger
Debugging    Profiling




Execution    Structure
Reification   Evolution
MetaSpy
MetaSpy

          OLS 2011
     TO   Ber gel etal.
Mondrian Profiler
C omp lexity
  stema, Ducasse 2003
Sy anz L
Debugging    Profiling




Execution    Structure
Reification   Evolution
What if we do not
know what to evolve?
?
Prisma
Scarring
Scanning
Back in time
 Debugger
Back in time
 Debugger

                              Debu gger
                    w
                 Floal. ECOOP 2008
      O   b ject  nhard e
                          t
              Lie
Instance variable
     history
name                        value
                                 init@t1                    null
                                     predecessor

                       name                        value
      :Person                 field-write@t2                'Doe'
                                     predecessor
                       name
                                                   value
                              field-write@t3                'Smith'
person := Person new   t1
...
name := 'Doe'          t2
...
name := 'Smith'        t3
Debugging    Profiling




Execution    Structure
Reification   Evolution
Talents


scg.unibe.ch/research/talents
Talents
                                   ST 2 011F. Perin and
                            IW                ie rstrasz,
                                  îr ba, O. N gli
                 J. Re ssia, T. G        L. Reng


scg.unibe.ch/research/talents
Dynamically
composable units of
     reuse
moosetechnology.org
MooseEntity


                                      FAMIXEntity

                                                ...

                                       FAMIXType
aFAMIXClass
  isTestClass
                          2            FAMIXClass                            Key
                                                                   instance-of
                                  isTestClass
                1                                                  message send
                                                                   lookup

            aFAMIXClass            self inheritsFrom: 'TestCase'
                              3
MooseEntity


                                                                    FAMIXEntity

                                                                        ...
                                        3
                                            aJeeClassTalent
                                                                    FAMIXType
                                               talent isTestClass


                     aJeeClassTalent                                FAMIXClass
aFAMIXClass
                                                   2
  inheritsFrom: 'TestCase'

                             4
                                 aFAMIXClass                                                Key
                                                                                  instance-of
                                 1                                                message send
                                                                                  lookup
                aFAMIXClass
                                                                                  acquire
                  isTestClass
Operators

• @ alias
• - exclusion
• , composition
Flattening
Scoping
Evolution friendly
 Object Model
Organize the
 Meta-level
Explicit
Meta-objects
Class

          Meta-object




 Object
Class

          Meta-object




 Object
Class

            Meta-object




Evolved Object
Object>>haltAtNextMessage
	 | aMetaObject |
	 aMetaObject := BFBehavioralMetaObject new.
	 aMetaObject
	 	 when: (BFMessageReceiveEvent new)
	 	 do: [ self metaObject unbindFrom: self.
         TransparentBreakpoint signal ].
	 aMetaObject bindTo: self
We let Smalltalk
     loose
Object
               Prisma
Debugger



Subjectopia   MetaSpy



  Talents     Chameleon
scg.unibe.ch/jenkins/
scg.unibe.ch/research/bifrost

Más contenido relacionado

Similar a Bifrost: Setting Smalltalk Loose

1 Vampir Overview
1 Vampir Overview1 Vampir Overview
1 Vampir OverviewPTIHPA
 
Introduction to Monte Carlo Ray Tracing, OpenCL Implementation (CEDEC 2014)
Introduction to Monte Carlo Ray Tracing, OpenCL Implementation (CEDEC 2014)Introduction to Monte Carlo Ray Tracing, OpenCL Implementation (CEDEC 2014)
Introduction to Monte Carlo Ray Tracing, OpenCL Implementation (CEDEC 2014)Takahiro Harada
 
Crash course on data streaming (with examples using Apache Flink)
Crash course on data streaming (with examples using Apache Flink)Crash course on data streaming (with examples using Apache Flink)
Crash course on data streaming (with examples using Apache Flink)Vincenzo Gulisano
 
Directive-based approach to Heterogeneous Computing
Directive-based approach to Heterogeneous ComputingDirective-based approach to Heterogeneous Computing
Directive-based approach to Heterogeneous ComputingRuymán Reyes
 
Parallelization of Coupled Cluster Code with OpenMP
Parallelization of Coupled Cluster Code with OpenMPParallelization of Coupled Cluster Code with OpenMP
Parallelization of Coupled Cluster Code with OpenMPAnil Bohare
 
Presentation slides for "A formal foundation for trace-based JIT compilation"
Presentation slides for "A formal foundation for trace-based JIT compilation"Presentation slides for "A formal foundation for trace-based JIT compilation"
Presentation slides for "A formal foundation for trace-based JIT compilation"mvdcamme
 
20081114 Friday Food iLabt Bart Joris
20081114 Friday Food iLabt Bart Joris20081114 Friday Food iLabt Bart Joris
20081114 Friday Food iLabt Bart Jorisimec.archive
 
EclipseCon Eu 2015 - Breathe life into your Designer!
EclipseCon Eu 2015 - Breathe life into your Designer!EclipseCon Eu 2015 - Breathe life into your Designer!
EclipseCon Eu 2015 - Breathe life into your Designer!melbats
 
Identifying Optimal Trade-Offs between CPU Time Usage and Temporal Constraints
Identifying Optimal Trade-Offs between CPU Time Usage and Temporal ConstraintsIdentifying Optimal Trade-Offs between CPU Time Usage and Temporal Constraints
Identifying Optimal Trade-Offs between CPU Time Usage and Temporal ConstraintsLionel Briand
 
Containerizing HPC and AI applications using E4S and Performance Monitor tool
Containerizing HPC and AI applications using E4S and Performance Monitor toolContainerizing HPC and AI applications using E4S and Performance Monitor tool
Containerizing HPC and AI applications using E4S and Performance Monitor toolGanesan Narayanasamy
 
CloudMC: A cloud computing map-reduce implementation for radiotherapy. RUBEN ...
CloudMC: A cloud computing map-reduce implementation for radiotherapy. RUBEN ...CloudMC: A cloud computing map-reduce implementation for radiotherapy. RUBEN ...
CloudMC: A cloud computing map-reduce implementation for radiotherapy. RUBEN ...Big Data Spain
 
Benchmarking and PHPBench
Benchmarking and PHPBenchBenchmarking and PHPBench
Benchmarking and PHPBenchdantleech
 
Software effort estimation through clustering techniques of RBFN network
Software effort estimation through clustering techniques of RBFN networkSoftware effort estimation through clustering techniques of RBFN network
Software effort estimation through clustering techniques of RBFN networkIOSR Journals
 

Similar a Bifrost: Setting Smalltalk Loose (20)

1 Vampir Overview
1 Vampir Overview1 Vampir Overview
1 Vampir Overview
 
Introduction to Monte Carlo Ray Tracing, OpenCL Implementation (CEDEC 2014)
Introduction to Monte Carlo Ray Tracing, OpenCL Implementation (CEDEC 2014)Introduction to Monte Carlo Ray Tracing, OpenCL Implementation (CEDEC 2014)
Introduction to Monte Carlo Ray Tracing, OpenCL Implementation (CEDEC 2014)
 
Crash course on data streaming (with examples using Apache Flink)
Crash course on data streaming (with examples using Apache Flink)Crash course on data streaming (with examples using Apache Flink)
Crash course on data streaming (with examples using Apache Flink)
 
Directive-based approach to Heterogeneous Computing
Directive-based approach to Heterogeneous ComputingDirective-based approach to Heterogeneous Computing
Directive-based approach to Heterogeneous Computing
 
Parallelization of Coupled Cluster Code with OpenMP
Parallelization of Coupled Cluster Code with OpenMPParallelization of Coupled Cluster Code with OpenMP
Parallelization of Coupled Cluster Code with OpenMP
 
CSMR10a.ppt
CSMR10a.pptCSMR10a.ppt
CSMR10a.ppt
 
Ch1
Ch1Ch1
Ch1
 
Ch1
Ch1Ch1
Ch1
 
Presentation slides for "A formal foundation for trace-based JIT compilation"
Presentation slides for "A formal foundation for trace-based JIT compilation"Presentation slides for "A formal foundation for trace-based JIT compilation"
Presentation slides for "A formal foundation for trace-based JIT compilation"
 
Performance_Programming
Performance_ProgrammingPerformance_Programming
Performance_Programming
 
Dsp lab manual 15 11-2016
Dsp lab manual 15 11-2016Dsp lab manual 15 11-2016
Dsp lab manual 15 11-2016
 
20081114 Friday Food iLabt Bart Joris
20081114 Friday Food iLabt Bart Joris20081114 Friday Food iLabt Bart Joris
20081114 Friday Food iLabt Bart Joris
 
EclipseCon Eu 2015 - Breathe life into your Designer!
EclipseCon Eu 2015 - Breathe life into your Designer!EclipseCon Eu 2015 - Breathe life into your Designer!
EclipseCon Eu 2015 - Breathe life into your Designer!
 
Identifying Optimal Trade-Offs between CPU Time Usage and Temporal Constraints
Identifying Optimal Trade-Offs between CPU Time Usage and Temporal ConstraintsIdentifying Optimal Trade-Offs between CPU Time Usage and Temporal Constraints
Identifying Optimal Trade-Offs between CPU Time Usage and Temporal Constraints
 
Containerizing HPC and AI applications using E4S and Performance Monitor tool
Containerizing HPC and AI applications using E4S and Performance Monitor toolContainerizing HPC and AI applications using E4S and Performance Monitor tool
Containerizing HPC and AI applications using E4S and Performance Monitor tool
 
defense_PPT
defense_PPTdefense_PPT
defense_PPT
 
ASE02.ppt
ASE02.pptASE02.ppt
ASE02.ppt
 
CloudMC: A cloud computing map-reduce implementation for radiotherapy. RUBEN ...
CloudMC: A cloud computing map-reduce implementation for radiotherapy. RUBEN ...CloudMC: A cloud computing map-reduce implementation for radiotherapy. RUBEN ...
CloudMC: A cloud computing map-reduce implementation for radiotherapy. RUBEN ...
 
Benchmarking and PHPBench
Benchmarking and PHPBenchBenchmarking and PHPBench
Benchmarking and PHPBench
 
Software effort estimation through clustering techniques of RBFN network
Software effort estimation through clustering techniques of RBFN networkSoftware effort estimation through clustering techniques of RBFN network
Software effort estimation through clustering techniques of RBFN network
 

Más de Jorge Ressia

Object-Centric Debugging
Object-Centric DebuggingObject-Centric Debugging
Object-Centric DebuggingJorge Ressia
 
Talents Presentation at ESUG 2011
Talents Presentation at ESUG 2011Talents Presentation at ESUG 2011
Talents Presentation at ESUG 2011Jorge Ressia
 
Subjectopia tools2011
Subjectopia tools2011Subjectopia tools2011
Subjectopia tools2011Jorge Ressia
 
Advanced OO Design
Advanced OO DesignAdvanced OO Design
Advanced OO DesignJorge Ressia
 
Live featureanalysis
Live featureanalysisLive featureanalysis
Live featureanalysisJorge Ressia
 
05 Problem Detection
05 Problem Detection05 Problem Detection
05 Problem DetectionJorge Ressia
 

Más de Jorge Ressia (8)

Object-Centric Debugging
Object-Centric DebuggingObject-Centric Debugging
Object-Centric Debugging
 
Talents Presentation at ESUG 2011
Talents Presentation at ESUG 2011Talents Presentation at ESUG 2011
Talents Presentation at ESUG 2011
 
Subjectopia tools2011
Subjectopia tools2011Subjectopia tools2011
Subjectopia tools2011
 
Advanced OO Design
Advanced OO DesignAdvanced OO Design
Advanced OO Design
 
Opal compiler
Opal compilerOpal compiler
Opal compiler
 
Live featureanalysis
Live featureanalysisLive featureanalysis
Live featureanalysis
 
Runtime evolution
Runtime evolutionRuntime evolution
Runtime evolution
 
05 Problem Detection
05 Problem Detection05 Problem Detection
05 Problem Detection
 

Último

Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
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 CVKhem
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
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 educationjfdjdjcjdnsjd
 
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 FresherRemote DBA Services
 
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.pdfsudhanshuwaghmare1
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe 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
 
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 productivityPrincipled Technologies
 
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 WorkerThousandEyes
 
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...Martijn de Jong
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
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
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024The Digital Insurer
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 

Último (20)

Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
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
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
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
 
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
 
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
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
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
 
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
 
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
 
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...
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
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
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 

Bifrost: Setting Smalltalk Loose

  • 1. Letting Smalltalk Loose Jorge Ressia www.scg.unibe.ch
  • 3. Computer revolution has not happened yet Kay997 Alan PSLA 1 O Keynote O
  • 4. improve previous ways of thinking
  • 8. We still go back to the source code
  • 10. { { { { } } } } { }
  • 11. { { { { } } } } { }
  • 12. { { { { } } } } { }
  • 13. { { { { } } } } { }
  • 14. { { { { } } } } { }
  • 15. { { { { } } } } { }
  • 16. { { { { } } } } { }
  • 18. Domain-Sp CPU time profiling Mondrian [9] is an open and agile visualization engine. visualization using a graph of (possibly nested) nodes an Profile a serious performance issue was raised1 . Tracking down performance was not trivial. We first used a standard sam Execution sampling approximates the time spent in an by periodically stopping a program and recording the cu under executions. Such a profiling technique is relatively little impact on the overall execution. This sampling techn all mainstream profilers, such as JProfiler, YourKit, xprof MessageTally, the standard sampling-based profiler in P tually describes the execution in terms of CPU consumpt each method of Mondrian: 54.8% {11501ms} MOCanvas>>drawOn: 54.8% {11501ms} MORoot(MONode)>>displayOn: 30.9% {6485ms} MONode>>displayOn: { { | 18.1% {3799ms} MOEdge>>displayOn: { { ... } | 8.4% {1763ms} MOEdge>>displayOn: } } | | 8.0% {1679ms} MOStraightLineShape>>display:on: | | 2.6% {546ms} FormCanvas>>line:to:width:color: } { } ... 23.4% {4911ms} MOEdge>>displayOn: ... We can observe that the virtual machine spent abou the method displayOn: defined in the class MORoot. A ro nested node that contains all the nodes of the edges of t general profiling information says that rendering nodes a great share of the CPU time, but it does not help in pin and edges are responsible for the time spent. Not all grap consume resources. Traditional execution sampling profilers center their r the execution stack and completely ignore the identity of th the method call and its arguments. As a consequence, it which objects cause the slowdown. For the example above, says that we spent 30.9% in MONode>>displayOn: withou were actually refreshed too often. Coverage PetitParser is a parsing framework combining ideas from parser combinators, parsing expression grammars and pac grammars and parsers as objects that can be reconfigured
  • 19. CPU time profiling Mondrian [9] is an open and agile visualization engine. Profile visualization using a graph of (possibly nested) nodes an a serious performance issue was raised1 . Tracking down performance was not trivial. We first used a standard sam Execution sampling approximates the time spent in an by periodically stopping a program and recording the cu under executions. Such a profiling technique is relatively little impact on the overall execution. This sampling techn all mainstream profilers, such as JProfiler, YourKit, xprof MessageTally, the standard sampling-based profiler in P tually describes the execution in terms of CPU consumpt each method of Mondrian: 54.8% {11501ms} MOCanvas>>drawOn: 54.8% {11501ms} MORoot(MONode)>>displayOn: { { 30.9% {6485ms} MONode>>displayOn: { { | 18.1% {3799ms} MOEdge>>displayOn: } ... } } | 8.4% {1763ms} MOEdge>>displayOn: | | 8.0% {1679ms} MOStraightLineShape>>display:on: } { } | | 2.6% {546ms} FormCanvas>>line:to:width:color: ... 23.4% {4911ms} MOEdge>>displayOn: ... We can observe that the virtual machine spent abou the method displayOn: defined in the class MORoot. A ro nested node that contains all the nodes of the edges of t general profiling information says that rendering nodes a great share of the CPU time, but it does not help in pin and edges are responsible for the time spent. Not all grap consume resources. Traditional execution sampling profilers center their r the execution stack and completely ignore the identity of th the method call and its arguments. As a consequence, it which objects cause the slowdown. For the example above, says that we spent 30.9% in MONode>>displayOn: withou were actually refreshed too often. Domain Coverage PetitParser is a parsing framework combining ideas from parser combinators, parsing expression grammars and pac grammars and parsers as objects that can be reconfigured 1 http://forum.world.st/Mondrian-is-slow-next-step-tc a2261116 2 http://www.pharo-project.org/
  • 21.
  • 22. C omp lexity stemand Ducasse 2003 Sy zaLan
  • 23. little impact on the overall execution. This sampling technique is u all mainstream profilers, such as JProfiler, YourKit, xprof [10], an MessageTally, the standard sampling-based profiler in Pharo Sm tually describes the execution in terms of CPU consumption and i each method of Mondrian: 54.8% {11501ms} MOCanvas>>drawOn: 54.8% {11501ms} MORoot(MONode)>>displayOn: 30.9% {6485ms} MONode>>displayOn: | 18.1% {3799ms} MOEdge>>displayOn: ... | 8.4% {1763ms} MOEdge>>displayOn: | | 8.0% {1679ms} MOStraightLineShape>>display:on: | | 2.6% {546ms} FormCanvas>>line:to:width:color: ... 23.4% {4911ms} MOEdge>>displayOn: ... We can observe that the virtual machine spent about 54% o the method displayOn: defined in the class MORoot. A root is the nested node that contains all the nodes of the edges of the visua general profiling information says that rendering nodes and edge
  • 24. Domain-Specific Profiling 3 CPU time profiling Which is the relationship? Mondrian [9] is an open and agile visualization engine. Mondrian describes a visualization using a graph of (possibly nested) nodes and edges. In June 2010 a serious performance issue was raised1 . Tracking down the cause of the poor performance was not trivial. We first used a standard sample-based profiler. Execution sampling approximates the time spent in an application’s methods by periodically stopping a program and recording the current set of methods under executions. Such a profiling technique is relatively accurate since it has little impact on the overall execution. This sampling technique is used by almost all mainstream profilers, such as JProfiler, YourKit, xprof [10], and hprof. MessageTally, the standard sampling-based profiler in Pharo Smalltalk2 , tex- tually describes the execution in terms of CPU consumption and invocation for each method of Mondrian: 54.8% {11501ms} MOCanvas>>drawOn: 54.8% {11501ms} MORoot(MONode)>>displayOn: 30.9% {6485ms} MONode>>displayOn: ? | 18.1% {3799ms} MOEdge>>displayOn: ... | 8.4% {1763ms} MOEdge>>displayOn: | | 8.0% {1679ms} MOStraightLineShape>>display:on: | | 2.6% {546ms} FormCanvas>>line:to:width:color: ... 23.4% {4911ms} MOEdge>>displayOn: ... We can observe that the virtual machine spent about 54% of its time in the method displayOn: defined in the class MORoot. A root is the unique non- nested node that contains all the nodes of the edges of the visualization. This general profiling information says that rendering nodes and edges consumes a great share of the CPU time, but it does not help in pinpointing which nodes and edges are responsible for the time spent. Not all graphical elements equally consume resources. Traditional execution sampling profilers center their result on the frames of the execution stack and completely ignore the identity of the object that received the method call and its arguments. As a consequence, it is hard to track down which objects cause the slowdown. For the example above, the traditional profiler says that we spent 30.9% in MONode>>displayOn: without saying which nodes were actually refreshed too often. Coverage PetitParser is a parsing framework combining ideas from scannerless parsing,
  • 27. Most of the time this is good
  • 29. Time
  • 30. Time is a very useful concept
  • 34. Why?
  • 35. Debugging Profiling Execution Structure Reification Evolution
  • 36. Debugging Profiling Execution Structure Reification Evolution
  • 37. { { { { } } } } { }
  • 38. { { { { } } } } { }
  • 39. When is the next state written?
  • 40. Stop when the next message is received
  • 43. Debugging Profiling Execution Structure Reification Evolution
  • 45. MetaSpy OLS 2011 TO Ber gel etal.
  • 47.
  • 48. C omp lexity stema, Ducasse 2003 Sy anz L
  • 49.
  • 50. Debugging Profiling Execution Structure Reification Evolution
  • 51. What if we do not know what to evolve?
  • 52.
  • 53. ?
  • 56.
  • 57.
  • 58.
  • 59.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68. Back in time Debugger
  • 69. Back in time Debugger Debu gger w Floal. ECOOP 2008 O b ject nhard e t Lie
  • 70. Instance variable history
  • 71. name value init@t1 null predecessor name value :Person field-write@t2 'Doe' predecessor name value field-write@t3 'Smith' person := Person new t1 ... name := 'Doe' t2 ... name := 'Smith' t3
  • 72. Debugging Profiling Execution Structure Reification Evolution
  • 74. Talents ST 2 011F. Perin and IW ie rstrasz, îr ba, O. N gli J. Re ssia, T. G L. Reng scg.unibe.ch/research/talents
  • 77. MooseEntity FAMIXEntity ... FAMIXType aFAMIXClass isTestClass 2 FAMIXClass Key instance-of isTestClass 1 message send lookup aFAMIXClass self inheritsFrom: 'TestCase' 3
  • 78. MooseEntity FAMIXEntity ... 3 aJeeClassTalent FAMIXType talent isTestClass aJeeClassTalent FAMIXClass aFAMIXClass 2 inheritsFrom: 'TestCase' 4 aFAMIXClass Key instance-of 1 message send lookup aFAMIXClass acquire isTestClass
  • 79. Operators • @ alias • - exclusion • , composition
  • 83.
  • 86. Class Meta-object Object
  • 87. Class Meta-object Object
  • 88. Class Meta-object Evolved Object
  • 89. Object>>haltAtNextMessage | aMetaObject | aMetaObject := BFBehavioralMetaObject new. aMetaObject when: (BFMessageReceiveEvent new) do: [ self metaObject unbindFrom: self. TransparentBreakpoint signal ]. aMetaObject bindTo: self
  • 91. Object Prisma Debugger Subjectopia MetaSpy Talents Chameleon

Notas del editor

  1. \n
  2. repeated at 40th anniversary of “Mother of all demos”\nDoug Engelbart sketchpad\nhe meant that we are using computers to enhanced previous ways of thinking. Not to have new ways of thinking.\n
  3. \n
  4. \n
  5. Smalltalk is a very good example of this programming perspective.\n\nDealing with objects is good, and modifying them live is even better.\n
  6. \n
  7. We still regard our systems as a whole or part of them as static. We still go back to the code to analyze and understand.\nWe still are thinking in a reading paradigm\n
  8. \n
  9. Smalltalk is a very good example of this programming perspective\n
  10. Cell keratine\n\nGreen -> DNA\n\nred outer membrane, skin nails, hair.\n
  11. \n
  12. We still regard our systems as a whole or part of them as static. We still go back to the code to analyze and understand.\nWe still are thinking in a reading paradigm\n
  13. We still regard our systems as a whole or part of them as static. We still go back to the code to analyze and understand.\nWe still are thinking in a reading paradigm\n
  14. We still regard our systems as a whole or part of them as static. We still go back to the code to analyze and understand.\nWe still are thinking in a reading paradigm\n
  15. \n
  16. We have to go back to the code\n
  17. We have to go back to the code\n
  18. We have to go back to the code\n
  19. We have to go back to the code\n
  20. We have to go back to the code\n
  21. We have to go back to the code\n
  22. \n
  23. Code profilers commonly employ execution sampling as the way to obtain dynamic run-time information\n
  24. \n
  25. is a framework for drawing graphs\n
  26. \n
  27. \n
  28. What is the relationship between this and the domain? picture again\n
  29. \n
  30. \n
  31. \n
  32. Fixed the way we think it frames our mind set\n
  33. \n
  34. \n
  35. \n
  36. \n
  37. This is what we missed from the cell metaphor.\nWe took the structure and communication between cells but not the evolution part.\nCells are capable of creating a human being because they can evolve.\nViruses, cures, medicines, drugs, etc.\n
  38. \n
  39. This is what we missed from the cell metaphor.\nWe took the structure and communication between cells but not the evolution part.\nCells are capable of creating a human being because they can evolve.\nViruses, cures, medicines, drugs, etc.\n
  40. I am going to talk about 4 applications that were conceived by breaking loose from the object model.\n
  41. \n
  42. We have to go back to the code\n
  43. We have to go back to the code\n
  44. \n
  45. \n
  46. Between the questions that we ask ourselves and the solutions that our tools provide.\nAvoid going to the code. (going static)\nremain dynamic, interacting with the objects and if necessary make them evolve.\n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. Clicking and drag-and-dropping nodes refreshes the visualization, thus increasing the progress bar of the corresponding nodes. This profile helps identifying unnecessary rendering. We identified a situation in which nodes were refreshing without receiving user actions.\n
  53. \n
  54. \n
  55. \n
  56. \n
  57. We do not know what to evolve or who should evolve.\nWe need some spreading of the evolution like a disease or cure.\n\nThe adaptation cannot be seen by other objects which are in a different execution.\nThe adaptation is dynamically set.\n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. The impact to the system is bearable \n
  74. \n
  75. We have not forgotten about structural changes.\n
  76. \n
  77. that it is a cool, large and open source platform for data and software analysis that is being increasingly used in industrial projects\n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n
  83. How do we solve this?\n
  84. \n
  85. We see that there are many different ways of doing reflection, adaptation, instrumentation, many are low level.\nAnd the ones that are highly flexible cannot break free from the limitations of the language.\n
  86. Adaptation semantic abstraction for composing meta-level structure and behavior.\n
  87. \n
  88. \n
  89. \n
  90. \n
  91. \n
  92. \n
  93. We have a way of setting free from the assumptions and limitations of the object model.\nWe can experiment and build new abstractions.\nLike the object debugger, talents, meta spy, prisma, back in time debugging, etc.\n
  94. We built a tool for breaking the object model and we ended up trying different new things.\n
  95. We are not going to be able to find the next “new” thing by fixing more and more the abstractions that we use to think.\nI am not saying that nothing should be fixed.\nWhat I am saying is that sometimes is good to think out of the box and see what are we missing by embracing the advantages of having a fixed world.\nHaving a different point of view.\nBTW the world and its problems are not fixed at all.\n\nProviding a simple and unifying way of evolving objects allowed us to produce all these ideas and tools.\n
  96. We are not going to be able to find the next “new” thing by fixing more and more the abstractions that we use to think.\nI am not saying that nothing should be fixed.\nWhat I am saying is that sometimes is good to think out of the box and see what are we missing by embracing the advantages of having a fixed world.\nHaving a different point of view.\nBTW the world and its problems are not fixed at all.\n\nProviding a simple and unifying way of evolving objects allowed us to produce all these ideas and tools.\n
  97. works on any pharo version, you can load it now an use any of these tools right away.\n
  98. \n