SlideShare une entreprise Scribd logo
1  sur  35
Télécharger pour lire hors ligne
MarsJust another world
martes 2 de noviembre de 2010
MarsJust another world
martes 2 de noviembre de 2010
Who I am?
martes 2 de noviembre de 2010
Who I am?
I really don’t know (yet)
martes 2 de noviembre de 2010
Once upon a time...
There was Squeak...
martes 2 de noviembre de 2010
martes 2 de noviembre de 2010
...and Squeak had a lot of colors
(yes... many people like them... just
not me)
martes 2 de noviembre de 2010
...and other not so good
things
• no good keybinding and manual handling of
tools.
• no cool widgets (like trees, etc.)
• no native user interface (of course, not
Polymorph either)
martes 2 de noviembre de 2010
Then came Pharo!
A profesional
open-source
Smalltalk
martes 2 de noviembre de 2010
martes 2 de noviembre de 2010
Pharo has good UI
improvements
• With time, it incorporates
• Polymorph!
• A good set of key binds (like cmd+w,
finally!)
• ...and most of this changes are now on
Squeak too.
martes 2 de noviembre de 2010
martes 2 de noviembre de 2010
So, why Mars?
• Because native applications rocks
• The mac experience matters
• We should be able to produce that
experience using Pharo.
martes 2 de noviembre de 2010
And what’s Mars?
An model, view, controller user interface
framework for building native applications for the
OSX, iPhone and iPad
martes 2 de noviembre de 2010
Architecture in a slide
• Cocoa/CocoaTouch
• The ObjectiveCBridge
• Model,View, Controller
martes 2 de noviembre de 2010
The bridge
martes 2 de noviembre de 2010
Objective-C bridge
• Made by John McIntosh
• Present by default in all the latest vm builds
• Used on real applications for the iPhone
martes 2 de noviembre de 2010
Objective-C bridge
• An object in Pharo forward mesages to
Objective-C
• A proxy in Objective-C side interacts with a
correspondent object in Pharo side.
• Everything is handled by semaphores waiting
to do something, at both sides
• Yes, the coordination of that interaction is
tricky, but the bridge does that for us.
martes 2 de noviembre de 2010
The architecture
martes 2 de noviembre de 2010
Architecture:View
• As said, any control has it’s corresponding ObjectiveC
object.
• Everything is inside an Application
• Everything is
• a Window,
• a child of a Window, or
• a Dialog
• There are lot’s of controls already made, and more to
come
martes 2 de noviembre de 2010
Architecture: Controller
• Mars handles it’s actions through callbacks
installed as a proxy between Pharo and
ObjectiveC
• Any callback installed is a independent
process in Pharo side
• Yes, there are lots of processes if you run
Mars right now.
martes 2 de noviembre de 2010
Architecture: Model
• It uses a standard “model” mechanism
• For malleability, we can use
MRModelAdaptor
• It “borrows” something I saw in Dolphin.
• It is an adaptor for any model I need
(well... at least any model I needed, but I
can grow it later)
martes 2 de noviembre de 2010
Really small demo
martes 2 de noviembre de 2010
Problems
martes 2 de noviembre de 2010
Problems found
• The “dead lock” problem
• Changed by changing theVM structure
• But now there are other problem: no
scheduled proccess
• Being worked on by John and Eliot.
Thanks!
martes 2 de noviembre de 2010
Texto
The future
martes 2 de noviembre de 2010
Next steps
• We are still someplace between “make it
work” and “make it right”... but we will
succeed! (and very soon)
• Needs testing (Maybe with FScript)
• Needs documentation
• Last minute addition: MRNibObject
Make it work, make it right, make it fast
martes 2 de noviembre de 2010
Far next steps
• Mars for Linux and Windows?
• There are design issues, and abstraction
layers are never a good idea (IMHO)
martes 2 de noviembre de 2010
I would like to see... (1)
Standard VM MarsPlugin
PharoKernel Mars
MarsWorld
Other packages
Modular pharo in a standard (and/or Cog)VM
martes 2 de noviembre de 2010
I would like to see (2)
• The “great and unique and fantastique tool
rebuilding call”
• Our tools are most of the times old
• And our tools are always ugly
• Yes, it is an heresy... but a needed one.
martes 2 de noviembre de 2010
Where is Mars?
http://www.squeaksource.com/Mars
http://code.google.com/p/marsonpharo
http://groups.google.com/group/marsonpharo
martes 2 de noviembre de 2010
Where is Mars?
http://www.squeaksource.com/Mars
(lots of garbage there, so be careful)
http://code.google.com/p/marsonpharo
http://groups.google.com/group/marsonpharo
martes 2 de noviembre de 2010
Where is Mars?
http://www.squeaksource.com/Mars
(lots of garbage there, so be careful)
http://code.google.com/p/marsonpharo
(Nothing right now there, but binaries and
oneclicks will be there in the future)
http://groups.google.com/group/marsonpharo
martes 2 de noviembre de 2010
Where is Mars?
http://www.squeaksource.com/Mars
(lots of garbage there, so be careful)
http://code.google.com/p/marsonpharo
(Nothing right now there, but binaries and
oneclicks will be there in the future)
http://groups.google.com/group/marsonpharo
(No trafic, but specific questions and etc. can be
sent there)
martes 2 de noviembre de 2010
Questions?
martes 2 de noviembre de 2010

Contenu connexe

Similaire à Introduction to Mars: A Model-View-Controller Framework for Building Native Apps in Pharo

Linked data and Muruca @ COST a32 - Munich
Linked data and Muruca @ COST a32 - MunichLinked data and Muruca @ COST a32 - Munich
Linked data and Muruca @ COST a32 - MunichChristian Morbidoni
 
Pythonic APIs - Anthony Baxter
Pythonic APIs - Anthony BaxterPythonic APIs - Anthony Baxter
Pythonic APIs - Anthony Baxterknappt
 
Pharo, Spec and GTK
Pharo, Spec and GTKPharo, Spec and GTK
Pharo, Spec and GTKESUG
 
Groovy to infinity and beyond - SpringOne2GX - 2010 - Guillaume Laforge
Groovy to infinity and beyond - SpringOne2GX - 2010 - Guillaume LaforgeGroovy to infinity and beyond - SpringOne2GX - 2010 - Guillaume Laforge
Groovy to infinity and beyond - SpringOne2GX - 2010 - Guillaume LaforgeGuillaume Laforge
 
Mozilla Research Party Talk
Mozilla Research Party TalkMozilla Research Party Talk
Mozilla Research Party TalkBrendan Eich
 
Polymer in the real life - Devoxx France - 2016 04-20
Polymer in the real life - Devoxx France - 2016 04-20Polymer in the real life - Devoxx France - 2016 04-20
Polymer in the real life - Devoxx France - 2016 04-20Horacio Gonzalez
 
Day 1 slides UNO summer 2010 robotics workshop
Day 1 slides UNO summer 2010 robotics workshop Day 1 slides UNO summer 2010 robotics workshop
Day 1 slides UNO summer 2010 robotics workshop Raj Dasgupta
 
Why Plone Will Die
Why Plone Will DieWhy Plone Will Die
Why Plone Will DieAndreas Jung
 
Introduction to-cocos2d
Introduction to-cocos2dIntroduction to-cocos2d
Introduction to-cocos2dsagaroceanic11
 
Leweb09 Building Wave Robots
Leweb09 Building Wave RobotsLeweb09 Building Wave Robots
Leweb09 Building Wave RobotsPatrick Chanezon
 
Golab.io
Golab.ioGolab.io
Golab.ior3vit
 
Plone Conference 2010 – Where we go from here
Plone Conference 2010 – Where we go from herePlone Conference 2010 – Where we go from here
Plone Conference 2010 – Where we go from hereEric Steele
 
Cloudstack collaboration conference Europe - SDN and Devops
Cloudstack collaboration conference Europe - SDN and DevopsCloudstack collaboration conference Europe - SDN and Devops
Cloudstack collaboration conference Europe - SDN and DevopsJohn Willis
 
State of Python (2010)
State of Python (2010)State of Python (2010)
State of Python (2010)Richard Jones
 
The Reluctant SysAdmin : 360|iDev Austin 2010
The Reluctant SysAdmin : 360|iDev Austin 2010The Reluctant SysAdmin : 360|iDev Austin 2010
The Reluctant SysAdmin : 360|iDev Austin 2010Voxilate
 
Lessons Learned from CityOpenSource
Lessons Learned from CityOpenSourceLessons Learned from CityOpenSource
Lessons Learned from CityOpenSourceMarco Montanari
 
Virtual Smalltalk Images - IWST - ESUG 2013
Virtual Smalltalk Images - IWST - ESUG 2013Virtual Smalltalk Images - IWST - ESUG 2013
Virtual Smalltalk Images - IWST - ESUG 2013Guille Polito
 
Unity: la shell di ubuntu
Unity: la shell di ubuntuUnity: la shell di ubuntu
Unity: la shell di ubuntuMarco Trevisan
 

Similaire à Introduction to Mars: A Model-View-Controller Framework for Building Native Apps in Pharo (20)

Linked data and Muruca @ COST a32 - Munich
Linked data and Muruca @ COST a32 - MunichLinked data and Muruca @ COST a32 - Munich
Linked data and Muruca @ COST a32 - Munich
 
Pythonic APIs - Anthony Baxter
Pythonic APIs - Anthony BaxterPythonic APIs - Anthony Baxter
Pythonic APIs - Anthony Baxter
 
Pharo, Spec and GTK
Pharo, Spec and GTKPharo, Spec and GTK
Pharo, Spec and GTK
 
Groovy to infinity and beyond - SpringOne2GX - 2010 - Guillaume Laforge
Groovy to infinity and beyond - SpringOne2GX - 2010 - Guillaume LaforgeGroovy to infinity and beyond - SpringOne2GX - 2010 - Guillaume Laforge
Groovy to infinity and beyond - SpringOne2GX - 2010 - Guillaume Laforge
 
Mozilla Research Party Talk
Mozilla Research Party TalkMozilla Research Party Talk
Mozilla Research Party Talk
 
Polymer in the real life - Devoxx France - 2016 04-20
Polymer in the real life - Devoxx France - 2016 04-20Polymer in the real life - Devoxx France - 2016 04-20
Polymer in the real life - Devoxx France - 2016 04-20
 
Day 1 slides UNO summer 2010 robotics workshop
Day 1 slides UNO summer 2010 robotics workshop Day 1 slides UNO summer 2010 robotics workshop
Day 1 slides UNO summer 2010 robotics workshop
 
Why Plone Will Die
Why Plone Will DieWhy Plone Will Die
Why Plone Will Die
 
Introduction to-cocos2d
Introduction to-cocos2dIntroduction to-cocos2d
Introduction to-cocos2d
 
Introduction to Cocos2d
Introduction to Cocos2dIntroduction to Cocos2d
Introduction to Cocos2d
 
Leweb09 Building Wave Robots
Leweb09 Building Wave RobotsLeweb09 Building Wave Robots
Leweb09 Building Wave Robots
 
Golab.io
Golab.ioGolab.io
Golab.io
 
Plone Conference 2010 – Where we go from here
Plone Conference 2010 – Where we go from herePlone Conference 2010 – Where we go from here
Plone Conference 2010 – Where we go from here
 
Cloudstack collaboration conference Europe - SDN and Devops
Cloudstack collaboration conference Europe - SDN and DevopsCloudstack collaboration conference Europe - SDN and Devops
Cloudstack collaboration conference Europe - SDN and Devops
 
State of Python (2010)
State of Python (2010)State of Python (2010)
State of Python (2010)
 
The Reluctant SysAdmin : 360|iDev Austin 2010
The Reluctant SysAdmin : 360|iDev Austin 2010The Reluctant SysAdmin : 360|iDev Austin 2010
The Reluctant SysAdmin : 360|iDev Austin 2010
 
Lessons Learned from CityOpenSource
Lessons Learned from CityOpenSourceLessons Learned from CityOpenSource
Lessons Learned from CityOpenSource
 
Virtual Smalltalk Images - IWST - ESUG 2013
Virtual Smalltalk Images - IWST - ESUG 2013Virtual Smalltalk Images - IWST - ESUG 2013
Virtual Smalltalk Images - IWST - ESUG 2013
 
ActiveRecord 2.3
ActiveRecord 2.3ActiveRecord 2.3
ActiveRecord 2.3
 
Unity: la shell di ubuntu
Unity: la shell di ubuntuUnity: la shell di ubuntu
Unity: la shell di ubuntu
 

Plus de 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
 

Plus de 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
 

Dernier

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
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
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
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
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
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
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 

Dernier (20)

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
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...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
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
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 

Introduction to Mars: A Model-View-Controller Framework for Building Native Apps in Pharo

  • 1. MarsJust another world martes 2 de noviembre de 2010
  • 2. MarsJust another world martes 2 de noviembre de 2010
  • 3. Who I am? martes 2 de noviembre de 2010
  • 4. Who I am? I really don’t know (yet) martes 2 de noviembre de 2010
  • 5. Once upon a time... There was Squeak... martes 2 de noviembre de 2010
  • 6. martes 2 de noviembre de 2010
  • 7. ...and Squeak had a lot of colors (yes... many people like them... just not me) martes 2 de noviembre de 2010
  • 8. ...and other not so good things • no good keybinding and manual handling of tools. • no cool widgets (like trees, etc.) • no native user interface (of course, not Polymorph either) martes 2 de noviembre de 2010
  • 9. Then came Pharo! A profesional open-source Smalltalk martes 2 de noviembre de 2010
  • 10. martes 2 de noviembre de 2010
  • 11. Pharo has good UI improvements • With time, it incorporates • Polymorph! • A good set of key binds (like cmd+w, finally!) • ...and most of this changes are now on Squeak too. martes 2 de noviembre de 2010
  • 12. martes 2 de noviembre de 2010
  • 13. So, why Mars? • Because native applications rocks • The mac experience matters • We should be able to produce that experience using Pharo. martes 2 de noviembre de 2010
  • 14. And what’s Mars? An model, view, controller user interface framework for building native applications for the OSX, iPhone and iPad martes 2 de noviembre de 2010
  • 15. Architecture in a slide • Cocoa/CocoaTouch • The ObjectiveCBridge • Model,View, Controller martes 2 de noviembre de 2010
  • 16. The bridge martes 2 de noviembre de 2010
  • 17. Objective-C bridge • Made by John McIntosh • Present by default in all the latest vm builds • Used on real applications for the iPhone martes 2 de noviembre de 2010
  • 18. Objective-C bridge • An object in Pharo forward mesages to Objective-C • A proxy in Objective-C side interacts with a correspondent object in Pharo side. • Everything is handled by semaphores waiting to do something, at both sides • Yes, the coordination of that interaction is tricky, but the bridge does that for us. martes 2 de noviembre de 2010
  • 19. The architecture martes 2 de noviembre de 2010
  • 20. Architecture:View • As said, any control has it’s corresponding ObjectiveC object. • Everything is inside an Application • Everything is • a Window, • a child of a Window, or • a Dialog • There are lot’s of controls already made, and more to come martes 2 de noviembre de 2010
  • 21. Architecture: Controller • Mars handles it’s actions through callbacks installed as a proxy between Pharo and ObjectiveC • Any callback installed is a independent process in Pharo side • Yes, there are lots of processes if you run Mars right now. martes 2 de noviembre de 2010
  • 22. Architecture: Model • It uses a standard “model” mechanism • For malleability, we can use MRModelAdaptor • It “borrows” something I saw in Dolphin. • It is an adaptor for any model I need (well... at least any model I needed, but I can grow it later) martes 2 de noviembre de 2010
  • 23. Really small demo martes 2 de noviembre de 2010
  • 24. Problems martes 2 de noviembre de 2010
  • 25. Problems found • The “dead lock” problem • Changed by changing theVM structure • But now there are other problem: no scheduled proccess • Being worked on by John and Eliot. Thanks! martes 2 de noviembre de 2010
  • 26. Texto The future martes 2 de noviembre de 2010
  • 27. Next steps • We are still someplace between “make it work” and “make it right”... but we will succeed! (and very soon) • Needs testing (Maybe with FScript) • Needs documentation • Last minute addition: MRNibObject Make it work, make it right, make it fast martes 2 de noviembre de 2010
  • 28. Far next steps • Mars for Linux and Windows? • There are design issues, and abstraction layers are never a good idea (IMHO) martes 2 de noviembre de 2010
  • 29. I would like to see... (1) Standard VM MarsPlugin PharoKernel Mars MarsWorld Other packages Modular pharo in a standard (and/or Cog)VM martes 2 de noviembre de 2010
  • 30. I would like to see (2) • The “great and unique and fantastique tool rebuilding call” • Our tools are most of the times old • And our tools are always ugly • Yes, it is an heresy... but a needed one. martes 2 de noviembre de 2010
  • 32. Where is Mars? http://www.squeaksource.com/Mars (lots of garbage there, so be careful) http://code.google.com/p/marsonpharo http://groups.google.com/group/marsonpharo martes 2 de noviembre de 2010
  • 33. Where is Mars? http://www.squeaksource.com/Mars (lots of garbage there, so be careful) http://code.google.com/p/marsonpharo (Nothing right now there, but binaries and oneclicks will be there in the future) http://groups.google.com/group/marsonpharo martes 2 de noviembre de 2010
  • 34. Where is Mars? http://www.squeaksource.com/Mars (lots of garbage there, so be careful) http://code.google.com/p/marsonpharo (Nothing right now there, but binaries and oneclicks will be there in the future) http://groups.google.com/group/marsonpharo (No trafic, but specific questions and etc. can be sent there) martes 2 de noviembre de 2010
  • 35. Questions? martes 2 de noviembre de 2010