SlideShare une entreprise Scribd logo
1  sur  126
Télécharger pour lire hors ligne
The Dynamic Language
is not Enough
Lukas Renggli
Static Software
Static Software
Constant
Static Software
Constant
Fixed
Static Software
Constant
Fixed
Final
Dynamic Software
Dynamic Software
Adaptive
Dynamic Software
Adaptive
Extensible
Dynamic Software
Adaptive
Customizable
Extensible
Static
Language
Dynamic
Language
Static
Software
Dynamic
Software
:-(
Static
Language
Dynamic
Language
Static
Software
Dynamic
Software
:-(
:-|
Static
Language
Dynamic
Language
Static
Software
Dynamic
Software
:-|
Static
Language
Dynamic
Software
:-|
Static
Language
Dynamic
Software
:-(
:-|
Static
Language
Dynamic
Language
Static
Software
Dynamic
Software
:-(
:-|
:-S
Static
Language
Dynamic
Language
Static
Software
Dynamic
Software
:-S
Dynamic
Language
Static
Software
no support
easier
can always get
away with reflection
faster
don’t knowhow to do it
too complex
out-of-the-box
:-(
:-|
:-S
:-)
Static
Language
Dynamic
Language
Static
Software
Dynamic
Software
:-)
Dynamic
Language
Dynamic
Software
1
Subclassing
2
Extending
3
Meta-Modeling
4
Meta Meta-Modeling
5
Composing
6
Transforming
Subclassing
2
Extending
3
Meta-Modeling
4
Meta Meta-Modeling
5
Composing
6
Transforming
Subclassing Extending
3
Meta-Modeling
4
Meta Meta-Modeling
5
Composing
6
Transforming
Subclassing Extending
Meta-Modeling
4
Meta Meta-Modeling
5
Composing
6
Transforming
Subclassing Extending
Meta-Modeling Meta Meta-Modeling
5
Composing
6
Transforming
Subclassing Extending
Meta-Modeling Meta Meta-Modeling
Composing
6
Transforming
Subclassing Extending
Meta-Modeling Meta Meta-Modeling
Composing Transforming
He vetia
Subclassing
The framework for developing
sophisticated web applications
in Smalltalk
Add new functionality by
adding a new subclass.
WAComponent
renderContentOn:
WAComponent
renderContentOn:
MyComponent
renderContentOn:
Template Method
Extensible
Customizable
Adaptable
WAToolPlugin
label
execute
WANewSession... WATiming...
WAToolPlugin
label
execute
...
WAToolPlugin
label
execute
allPlugins
self	
  allSubclasses
collect:	
  [	
  :each	
  |	
  each	
  new	
  ]
WAHaloPlugin
label
execute
allPlugins
self	
  allSubclasses
collect:	
  [	
  :each	
  |	
  each	
  new	
  ]
Discussion
‣ Template Method Pattern
‣ Simple
‣ Lightweight
‣ Portable
‣ No extra infrastructure
Other Users
‣ Monticello Repository Types
‣ OmniBrowser Commands
‣ Code Critics Rules
‣ TextLint Rules (later today)
‣ Pier Commands, Views, Structures
‣ Magritte Description Types
Extending
Add new functionality by
adding a new method.
menuCommandOn:	
  aBuilder
	
   <worldMenu>
	
   (aBuilder	
  item:	
  'Shout	
  Workspace')
	
   	
   parent:	
  #Tools;
	
   	
   action:	
  [	
  self	
  open	
  ]
menuCommandOn:	
  aBuilder
	
   <worldMenu>
	
   (aBuilder	
  item:	
  'Shout	
  Workspace')
	
   	
   parent:	
  #Tools;
	
   	
   action:	
  [	
  self	
  open	
  ]
PragmaCollector	
  allSystemPragmas
	
  	
  	
  select:	
  [	
  :each	
  |	
  each	
  keyword	
  =	
  #worldMenu	
  ]
}
Discussion
‣ Simple
‣ Lightweight
‣ Long utility methods
‣ Encourages class-extensions
Alternatives to Pragmas
‣ Naming convention for selector names
‣ Naming convention for protocol names
‣ All methods of a specific class
Other Users
‣ Pier Value Links
‣ Pharo Compiler Primitives, System
Settings
‣ OmniBrowser Commands, Obsolete
Commands, and Browser Meta-Model
Meta-Modeling
Create a first-class
description of the domain.
Environment
Environment Category
Environment Category
Environment
Class
Comment
Metaclass
Category
Environment
Class
Comment
Metaclass
Protocol
Category
AllProtocol
Environment
Class
Comment
Metaclass
Protocol
MethodCategory
AllProtocol
OB-Web
OB-Mars
Discussion
‣ UI independent
‣ Domain-specific reflection
‣ Extensible using subclassing/extending
‣ Can cause meta-confusion
‣ Can be limiting or slow
Other Users
‣ GLORP Relational Object Mapping
‣ Glamour Browser Model
‣ Monticello Code Model
‣ Announcement Event Model
‣ Magritte Meta-Model
Meta Meta-Modeling
Create a first-class
description of the
description of the
domain.
Address Object
street = 'Schützenmattstrasse'
plz = 3012
place = 'Bern'
canton = 'Bern'
:Address
Address Description
street = 'Schützenmattstrasse'
plz = 3012
place = 'Bern'
canton = 'Bern'
:Address
label = 'Street'
:StringDescription
label = 'PLZ'
required = true
range = 1000..9999
:NumberDescription
label = 'Place'
required = true
:StringDescription
label = 'Canton'
required = true
sorted = true
options = #( 'Bern' 'Zurich' ... )
:SingleOptionDescription
label = 'Address'
:Containerdescription
result	
  :=	
  anAddress	
  asMorph
	
   addButtons;
	
   addWindow;
	
   callInWorld
Morphic Interpreter
result	
  :=	
  self	
  call:	
  (anAddress	
  asComponent
	
   addValidatedForm;
	
   yourself).
Seaside Interpreter
*
*
*
Other “Interpreters”
‣ Viewer building
‣ Editor building
‣ Report building
‣ Documentation
‣ Data validation
‣ Query processing
‣ Object filtering
‣ Object serialization
‣ Object copying
‣ Object indexing
‣ Object initialization
‣ Object extension
‣ Object adaption
‣ Object customization
and much more ...
Domain Model
Metamodel
Meta-
Metamodel
<described-by>
<described-by>
Developer
End User
Domain Model
Metamodel
Meta-
Metamodel
Magritte
Developer
<described-by>
<described-by>
Magritte
End User
Object
Description
Type
Object
*
*
description
attributes
1 *
(b) Magritteonent Object
*
attributes
1 *
nent
erty
Object
Description
Type
Object
*
*
description
attributes
1 *
(b) Magritte
t Object
Description
Type
Object
*
*
description
attributes
1 *
(b) Magritte
Object
Description
Type
Object
*
*
description
attributes
1 *
(b) Magritteonent Object
*
attributes
1 *
nent
erty
Object
Description
Type
Object
*
*
description
attributes
1 *
(b) Magritte
t Object
Description
Type
Object
*
*
description
attributes
1 *
(b) Magritte
Object
Description
Type
Object
*
*
description
attributes
1 *
(b) Magritteonent Object
*
attributes
1 *
nent
erty
Object
Description
Type
Object
*
*
description
attributes
1 *
(b) Magritte
t Object
Description
Type
Object
*
*
description
attributes
1 *
(b) Magritte
Adaptive
Object Model
Run-time
End users
customizability
Demo
Discussion
‣ Very powerful and flexible
‣ Runtime adaptive code
‣ End-user programmable code
‣ Can cause meta meta-confusion
‣ Can be slow
Other Users
‣ Gjallar Issue Tracker
‣ DabbleDB Online Database
Composing
Build something new
by composing existing
parts.
scanIdentifier
	 self step.	
	 ((currentCharacter between: $A and: $Z) or:
[ currentCharacter between: $a and: $z ]) ifTrue: [
	 	 [ self recordMatch: #IDENTIFIER.
	 	 self step.
	 	 (currentCharacter between: $0 and: $9)
or: [ (currentCharacter between: $A and: $Z) or:
[ currentCharacter between: $a and: $z ] ] ]
		 	 	 whileTrue.
	 ^ self reportLastMatch ]
#(	#[1 0 9 0 25 0 13 0 34 0 17 0 40 0 21 0 41]
	 #[1 0 9 0 25 0 13 0 34 0 93 0 76 0 157 0 112]
	 #[1 2 38 0 21 2 38 0 25 2 38 0 26 0 13 0 34]
	 #[0 1 154 0 16 0 21 0 25 0 26 0 34 0 40 0 41]
	 #[0 1 210 0 76 0 81]
	 #[0 1 214 0 76 0 81]
	 #[1 0 173 0 76 0 177 0 81]
	 #[0 1 134 0 16 0 21 0 25 0 26 0 34 0 40 0 41]
	 #[1 1 46 0 21 1 46 0 25 1 46 0 26 1 69]

 #[1 1 54 0 21 1 54 0 25 1 54 0 26 1 54 0 34]

 #[0 2 102 0 21 0 25 0 26 0 34 0 40 0 41 0 76]
	 #[0 2 50 0 21 0 25 0 26 0 76 0 79]
	 #[1 1 13 0 76 2 85 0 124 1 21 0 125]
	 #[1 2 89 0 17 2 30 0 21 2 30 0 82]
	 #[1 2 93 0 21 2 97 0 82] )
Scannerless
Parser Combinator
a..z a..z
0..9
ID	
  ::=	
  letter	
  {	
  letter	
  |	
  digit	
  }	
  ;
letter
letter digit
sequence
choice
many
ID	
  ::=	
  letter	
  {	
  letter	
  |	
  digit	
  }	
  ;
letter
letter digit
sequence
choice
many
id	
  :=	
  #letter	
  ,	
  (#letter	
  /	
  #digit)	
  star
letter
letter digit
sequence
choice
many
id	
  :=	
  #letter	
  asParser	
  ,	
  (#letter	
  
asParser	
  /	
  #digit	
  asParser)	
  star
Smalltalk
+ SQL Language
+ Regular Expression
= Customized Smalltalk
Discussion
‣ The LEGO model
‣ New parts can be easily created
‣ Smalltalk provides elegant composition
with binary operators
Other Users
‣ Brazil Widgets in Newspeak
‣ Seaside and Pier Widgets
‣ Refactoring Engine Change Objects
Transforming
He vetia
Build something new
by transforming existing
parts.
Language
Scope
Language
Concern
Language
Change
Language
Box
Language Scope
Active?
Language Scope
‣ System
‣ Packages
‣ Classes
‣ Methods
Language Scope
Language Concern
Semantics
Language Concern
Transformation
Language Concern
Context Menus
Navigation Search
Code Expansion
Code Completion
Error Correction
Custom Inspector
Refactorings
Code Folding
Highlighting
Code Execution
Language Change
Syntax
Language Change
Smalltalk
Language Change
Smalltalk
+ SQL Language
Language Change
Smalltalk
+ SQL Language
+ Regular Expression
Smalltalk
+ SQL Language
+ Regular Expression
= Custom Host Language
Language Change
Demo
Discussion
‣ Very generic and powerful
‣ Usually requires extra infrastructure (for
example Helvetia)
‣ Might be difficult to learn and apply
Other Users
‣ Refactoring Engine Rewrite Rules
‣ Compiler Hacks (ok, not really)
‣ XML, XSD Transformations
‣ SOUL, IntensiVE
Anything Else?
‣ Subclassing
‣ Extending
‣ Meta-Modeling
‣ Meta Meta-Modeling
‣ Composing
‣ Transforming
}How to make “tools”
and “languages”
extensible?
How to make the “object
model” extensible?
Albedo
Jorge Ressia
Object
Class
Object
Structural
Meta-object
Class
Object
Structural
Meta-object
Class
Behavioral
Meta-object
:-(
:-|
:-S
:-)
Static
Language
Dynamic
Language
Static
Software
Dynamic
Software
:-)
lukas-renggli.ch
@renggli
Dynamic Software

Contenu connexe

Similaire à The Dynamic Language is not Enough

Helvetia
HelvetiaHelvetia
HelvetiaESUG
 
Spark Streaming with Cassandra
Spark Streaming with CassandraSpark Streaming with Cassandra
Spark Streaming with CassandraJacek Lewandowski
 
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...Sang Don Kim
 
.NET Foundation, Future of .NET and C#
.NET Foundation, Future of .NET and C#.NET Foundation, Future of .NET and C#
.NET Foundation, Future of .NET and C#Bertrand Le Roy
 
Building DSLs On CLR and DLR (Microsoft.NET)
Building DSLs On CLR and DLR (Microsoft.NET)Building DSLs On CLR and DLR (Microsoft.NET)
Building DSLs On CLR and DLR (Microsoft.NET)Vitaly Baum
 
Beyond php it's not (just) about the code
Beyond php   it's not (just) about the codeBeyond php   it's not (just) about the code
Beyond php it's not (just) about the codeWim Godden
 
Practical Models in Practice
Practical Models in PracticePractical Models in Practice
Practical Models in PracticeCHOOSE
 
The Art Of Readable Code
The Art Of Readable CodeThe Art Of Readable Code
The Art Of Readable CodeBaidu, Inc.
 
Beyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeBeyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeWim Godden
 
Consequences of using the Copy-Paste method in C++ programming and how to dea...
Consequences of using the Copy-Paste method in C++ programming and how to dea...Consequences of using the Copy-Paste method in C++ programming and how to dea...
Consequences of using the Copy-Paste method in C++ programming and how to dea...Andrey Karpov
 
PostgreSQL as seen by Rubyists (Kaigi on Rails 2022)
PostgreSQL as seen by Rubyists (Kaigi on Rails 2022)PostgreSQL as seen by Rubyists (Kaigi on Rails 2022)
PostgreSQL as seen by Rubyists (Kaigi on Rails 2022)Андрей Новиков
 
Dynamic Language Performance
Dynamic Language PerformanceDynamic Language Performance
Dynamic Language PerformanceKevin Hazzard
 
Beyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeBeyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeWim Godden
 

Similaire à The Dynamic Language is not Enough (20)

Helvetia
HelvetiaHelvetia
Helvetia
 
Spark Streaming with Cassandra
Spark Streaming with CassandraSpark Streaming with Cassandra
Spark Streaming with Cassandra
 
MLflow with R
MLflow with RMLflow with R
MLflow with R
 
Headless Js Testing
Headless Js TestingHeadless Js Testing
Headless Js Testing
 
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
 
.NET Foundation, Future of .NET and C#
.NET Foundation, Future of .NET and C#.NET Foundation, Future of .NET and C#
.NET Foundation, Future of .NET and C#
 
Building DSLs On CLR and DLR (Microsoft.NET)
Building DSLs On CLR and DLR (Microsoft.NET)Building DSLs On CLR and DLR (Microsoft.NET)
Building DSLs On CLR and DLR (Microsoft.NET)
 
Beyond php it's not (just) about the code
Beyond php   it's not (just) about the codeBeyond php   it's not (just) about the code
Beyond php it's not (just) about the code
 
Practical Models in Practice
Practical Models in PracticePractical Models in Practice
Practical Models in Practice
 
The Art Of Readable Code
The Art Of Readable CodeThe Art Of Readable Code
The Art Of Readable Code
 
Beyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeBeyond php - it's not (just) about the code
Beyond php - it's not (just) about the code
 
Legacy is Good
Legacy is GoodLegacy is Good
Legacy is Good
 
Odp
OdpOdp
Odp
 
Consequences of using the Copy-Paste method in C++ programming and how to dea...
Consequences of using the Copy-Paste method in C++ programming and how to dea...Consequences of using the Copy-Paste method in C++ programming and how to dea...
Consequences of using the Copy-Paste method in C++ programming and how to dea...
 
PostgreSQL as seen by Rubyists (Kaigi on Rails 2022)
PostgreSQL as seen by Rubyists (Kaigi on Rails 2022)PostgreSQL as seen by Rubyists (Kaigi on Rails 2022)
PostgreSQL as seen by Rubyists (Kaigi on Rails 2022)
 
Dynamic grammars
Dynamic grammarsDynamic grammars
Dynamic grammars
 
Dynamic Language Performance
Dynamic Language PerformanceDynamic Language Performance
Dynamic Language Performance
 
Unit1 C
Unit1 CUnit1 C
Unit1 C
 
Unit1 C
Unit1 CUnit1 C
Unit1 C
 
Beyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeBeyond php - it's not (just) about the code
Beyond php - it's not (just) about the code
 

Plus de Lukas Renggli

Mastering Grammars with PetitParser
Mastering Grammars with PetitParserMastering Grammars with PetitParser
Mastering Grammars with PetitParserLukas Renggli
 
Natural Language Checking with Program Checking Tools
Natural Language Checking with Program Checking ToolsNatural Language Checking with Program Checking Tools
Natural Language Checking with Program Checking ToolsLukas Renggli
 
Dynamic Language Embedding With Homogeneous Tool Support
Dynamic Language Embedding With Homogeneous Tool SupportDynamic Language Embedding With Homogeneous Tool Support
Dynamic Language Embedding With Homogeneous Tool SupportLukas Renggli
 
Seaside — Agile Software Development
Seaside — Agile Software DevelopmentSeaside — Agile Software Development
Seaside — Agile Software DevelopmentLukas Renggli
 
Domain-Specific Program Checking
Domain-Specific Program CheckingDomain-Specific Program Checking
Domain-Specific Program CheckingLukas Renggli
 
Embedding Languages Without Breaking Tools
Embedding Languages Without Breaking ToolsEmbedding Languages Without Breaking Tools
Embedding Languages Without Breaking ToolsLukas Renggli
 
Language Boxes — Bending the Host Language with Modular Language Changes
Language Boxes — Bending the Host Language with Modular Language ChangesLanguage Boxes — Bending the Host Language with Modular Language Changes
Language Boxes — Bending the Host Language with Modular Language ChangesLukas Renggli
 
Seaside Status Message
Seaside Status MessageSeaside Status Message
Seaside Status MessageLukas Renggli
 
Seaside - The Revenge of Smalltalk
Seaside - The Revenge of SmalltalkSeaside - The Revenge of Smalltalk
Seaside - The Revenge of SmalltalkLukas Renggli
 
Seaside - On not getting bogged down
Seaside - On not getting bogged downSeaside - On not getting bogged down
Seaside - On not getting bogged downLukas Renggli
 
Seaside - Past, Present and Future
Seaside - Past, Present and FutureSeaside - Past, Present and Future
Seaside - Past, Present and FutureLukas Renggli
 
Magritte - A Meta-Driven Approach to Empower Developers and End Users
Magritte - A Meta-Driven Approach to Empower Developers and End UsersMagritte - A Meta-Driven Approach to Empower Developers and End Users
Magritte - A Meta-Driven Approach to Empower Developers and End UsersLukas Renggli
 
Transactional Memory for Smalltalk
Transactional Memory for SmalltalkTransactional Memory for Smalltalk
Transactional Memory for SmalltalkLukas Renggli
 
Seaside - Web Development As You Like It
Seaside - Web Development As You Like ItSeaside - Web Development As You Like It
Seaside - Web Development As You Like ItLukas Renggli
 
5 Steps to Mastering the Art of Seaside
5 Steps to Mastering the Art of Seaside5 Steps to Mastering the Art of Seaside
5 Steps to Mastering the Art of SeasideLukas Renggli
 

Plus de Lukas Renggli (18)

Mastering Grammars with PetitParser
Mastering Grammars with PetitParserMastering Grammars with PetitParser
Mastering Grammars with PetitParser
 
Natural Language Checking with Program Checking Tools
Natural Language Checking with Program Checking ToolsNatural Language Checking with Program Checking Tools
Natural Language Checking with Program Checking Tools
 
Dynamic Language Embedding With Homogeneous Tool Support
Dynamic Language Embedding With Homogeneous Tool SupportDynamic Language Embedding With Homogeneous Tool Support
Dynamic Language Embedding With Homogeneous Tool Support
 
Seaside — Agile Software Development
Seaside — Agile Software DevelopmentSeaside — Agile Software Development
Seaside — Agile Software Development
 
Domain-Specific Program Checking
Domain-Specific Program CheckingDomain-Specific Program Checking
Domain-Specific Program Checking
 
Embedding Languages Without Breaking Tools
Embedding Languages Without Breaking ToolsEmbedding Languages Without Breaking Tools
Embedding Languages Without Breaking Tools
 
Language Boxes — Bending the Host Language with Modular Language Changes
Language Boxes — Bending the Host Language with Modular Language ChangesLanguage Boxes — Bending the Host Language with Modular Language Changes
Language Boxes — Bending the Host Language with Modular Language Changes
 
jQuery for Seaside
jQuery for SeasidejQuery for Seaside
jQuery for Seaside
 
Seaside Status Message
Seaside Status MessageSeaside Status Message
Seaside Status Message
 
Seaside - The Revenge of Smalltalk
Seaside - The Revenge of SmalltalkSeaside - The Revenge of Smalltalk
Seaside - The Revenge of Smalltalk
 
Magritte Blitz
Magritte BlitzMagritte Blitz
Magritte Blitz
 
Seaside - On not getting bogged down
Seaside - On not getting bogged downSeaside - On not getting bogged down
Seaside - On not getting bogged down
 
Magritte
MagritteMagritte
Magritte
 
Seaside - Past, Present and Future
Seaside - Past, Present and FutureSeaside - Past, Present and Future
Seaside - Past, Present and Future
 
Magritte - A Meta-Driven Approach to Empower Developers and End Users
Magritte - A Meta-Driven Approach to Empower Developers and End UsersMagritte - A Meta-Driven Approach to Empower Developers and End Users
Magritte - A Meta-Driven Approach to Empower Developers and End Users
 
Transactional Memory for Smalltalk
Transactional Memory for SmalltalkTransactional Memory for Smalltalk
Transactional Memory for Smalltalk
 
Seaside - Web Development As You Like It
Seaside - Web Development As You Like ItSeaside - Web Development As You Like It
Seaside - Web Development As You Like It
 
5 Steps to Mastering the Art of Seaside
5 Steps to Mastering the Art of Seaside5 Steps to Mastering the Art of Seaside
5 Steps to Mastering the Art of Seaside
 

Dernier

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
 
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
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
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
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
"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
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 

Dernier (20)

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
 
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
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
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
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
"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
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 

The Dynamic Language is not Enough