SlideShare a Scribd company logo
1 of 39
Download to read offline
Pablo Tesone - Pharo Consortium
ESUG 2023
Applications in
Pharo
Come to the Desktop Side
2
Pablo Tesone
Pharo Consortium
Engineer
• 24 years trying to code
• 13 years of experience in industrial applications
• 9 Years working on Pharo
• PhD in Dynamic Software Update
• Interested in improving development tools and the daily
development process.
• Enthusiast of the object oriented programming and their tools.
It’s a me, Pablo!
@tesonep
3
Desktop Applications
Our Objective Today
Desktop Applications
Our Objective Today
• We want:
• Multiplatform Applications
• Seamless Operating System Integration
• Packaging and Installation
• Automatic Process / CI integration
4
We want to develop in Pharo
• Cool Tools
• Iterative Process
• Fun & Addictive
5
We want Pharo Everywhere
Because Pharo has a Rich Ecosystem
• Tools
• Frameworks
• Language Support
6
Because Pharo has a Rich Ecosystem
• Tools
• Frameworks
• Language Support
7
We want to take
advantage of
them!!!
A broad spectrum of Applications
And Pharo is
fi
t for it
8
Native
Applications
Custom UI
Apps
A broad spectrum of Applications
And Pharo is
fi
t for it
9
Native
Applications
Custom UI
Apps
Spec + GTK Bloc + Toplo
Spec
Cairo / Alexandrie
A broad spectrum of Applications
And Pharo is
fi
t for it
10
Native
Applications
Custom UI
Apps
Spec + GTK Bloc + Toplo
Spec
Cairo / Alexandrie
Let’s Automate
the Packaging
and Installer
An Example Application
• Let’s take a nice
game using Bloc +
Toplo
• Takuzu (puzzle
game similar to
Sudoku)
11
An Example Application
• Let’s take a nice
game using Bloc +
Toplo
• Takuzu (puzzle
game similar to
Sudoku)
12
Thanks Enzo
Demeulenaere
An Example Application
• Let’s make it look
like a Nice App
• Let’s package it
and have a nice
installer for it
• We are going to do
it for Windows and
MacOS
13
What we want (1/3)
Custom Icon and Branding
14
Executable Metadata
What we want (2/3)
OS Integration
15
Installers
What we want (3/3)
Custom Error Handling
16
Cheap and automatic!!!
The Plan
1. Load our application code
2. Add OS Integration (e.g., menus, noti
fi
cations,
etc)
3. Load Pharo Embedded Support Project
4. Generate Scripts to automatically build and
create installers.
5. Run them in our CI and distribute them
17
1. Load our application code
2. Add OS Integration (e.g., menus, noti
fi
cations,
etc)
3. Load Pharo Embedded Support Project
4. Generate Scripts to automatically build and
create installers.
5. Run them in our CI and distribute them
The Plan
18
1. Load our application code
1. Load our application code
2. Add OS Integration (e.g., menus, noti
fi
cations,
etc)
3. Load Pharo Embedded Support Project
4. Generate Scripts to automatically build and
create installers.
5. Run them in our CI and distribute them
The Plan
19
1. Load our application code
Easy, we just use
Metacello
The Plan
20
1. Load our application code
2. Add OS Integration (e.g., menus, noti
fi
cations,
etc)
3. Load Pharo Embedded Support Project
4. Generate Scripts to automatically build and
create installers.
5. Run them in our CI and distribute them
Add OS Integration
The Plan
21
Great Existing Libraries
OSX
Objective C Bridge
Windows
Pharo-OS-Windows
Pharo COM Support
Thanks!!!
Add OS Integration
The Plan
22
Great Existing Libraries
OSX
Objective C Bridge
Windows
Pharo-OS-Windows
Pharo COM Support
Esteban Torsten
Add OS Integration
OSX Examples in Action
23
Menus
Noti
fi
cations
1. Load our application code
2. Add OS Integration (e.g., menus, noti
fi
cations,
etc)
3. Load Pharo Embedded Support Project
4. Generate Scripts to automatically build and
create installers.
5. Run them in our CI and distribute them
The Plan
24
Load Pharo Embedded Support Project
• A library that provides:
• Custom error handling
• Command Line Handlers
• Generators for automatise the packaging
25
1. Load our application code
2. Add OS Integration (e.g., menus, noti
fi
cations,
etc)
3. Load Pharo Embedded Support Project
4. Generate Scripts to automatically build and
create installers.
5. Run them in our CI and distribute them
The Plan
26
Generate Scripts
Automatically build and create packages & installers
27
OSX
Generate Scripts
Automatically build and create packages & installers
28
OSX Bash Script
Generate Scripts
Automatically build and create packages & installers
29
OSX Bash Script
Installable
DMG
App
Package
Generate Scripts
Automatically build and create packages & installers
30
Windows
PowerShell
Script
Installable
MSI
Executable
CMake
Script
Generate Scripts
Automatically build and create packages & installers
31
Windows
PowerShell
Script
Installable
MSI
Executable
CMake
Script
Thanks!!!
Christophe Guille
1. Load our application code
2. Add OS Integration (e.g., menus, noti
fi
cations,
etc)
3. Load Pharo Embedded Support Project
4. Generate Scripts to automatically build and
create installers.
5. Run them in our CI and distribute them
The Plan
32
Run them in our CI and distribute them
Let’s run in the CI
33
Run in Github Action:
• Get a Pharo Image and load our code
• Generate the Scripts and execute them
• Upload Artifacts
• Available for OSX and Windows
Run them in our CI and distribute them
Let’s run in the CI
34
Run in Github Action:
• Get a Pharo Image and load our code
• Generate the Scripts and execute them
• Upload Artifacts
• Available for OSX and Windows
Run them in our CI and distribute them
Let’s run in the CI
35
Run in Github Action:
• Get a Pharo Image and load our code
• Generate the Scripts and execute them
• Upload Artifacts
• Available for OSX and Windows
Thanks!!!
Christophe Cyril Stef
Our Complete Example
Available on Github
36
tesonep/Takuzu
• Windows and OSX Example
• Github Actions
• OSX Integration
• Embedded Windows App
• Bloc Application
• Windows and OSX Example
• Github Actions
• OSX Integration
• Embedded Windows App
• Bloc Application
Our Complete Example
Available on Github
37
tesonep/Takuzu
Open to Improve
and to copy
Future Plans
Everything is Open
38
tesonep/pharo-vm-embedded-example
• Adding UI to generate script
• Support for Minimal Images
• Moving generators outside the image
• Adding support for signing / notarisation
• Documentation / More Examples
Applications in Pharo
Thanks so much!!!
39
tesonep/pharo-vm-embedded-example
tesonep/Takuzu
Custom Icon and Branding
Metadata
OS Integration
Error Handling
Installers
Automatizable

More Related Content

What's hot

Bitbucket pipelines
Bitbucket pipelinesBitbucket pipelines
Bitbucket pipelinesHoffman Lab
 
Pharo, Spec and GTK
Pharo, Spec and GTKPharo, Spec and GTK
Pharo, Spec and GTKESUG
 
DevTools at Netflix: Culture, Speed & Innovation
DevTools at Netflix: Culture, Speed & InnovationDevTools at Netflix: Culture, Speed & Innovation
DevTools at Netflix: Culture, Speed & InnovationAtlassian
 
Azure DevOps CI/CD For Beginners
Azure DevOps CI/CD  For BeginnersAzure DevOps CI/CD  For Beginners
Azure DevOps CI/CD For BeginnersRahul Nath
 
Managing Infrastructure as a Product - Introduction to Platform Engineering
Managing Infrastructure as a Product - Introduction to Platform EngineeringManaging Infrastructure as a Product - Introduction to Platform Engineering
Managing Infrastructure as a Product - Introduction to Platform EngineeringAdityo Pratomo
 
Agile Methodology(SCRUM)
Agile Methodology(SCRUM)Agile Methodology(SCRUM)
Agile Methodology(SCRUM)KhushSlideShare
 
Understanding the Agile Release and Sprint Planning Process
Understanding the Agile Release and Sprint Planning Process Understanding the Agile Release and Sprint Planning Process
Understanding the Agile Release and Sprint Planning Process John Derrico
 
Introduction to jira
Introduction to jiraIntroduction to jira
Introduction to jiraKhubaib Ahmed
 
Git with bitbucket
Git with bitbucketGit with bitbucket
Git with bitbucketSumin Byeon
 
Developer Experience
Developer ExperienceDeveloper Experience
Developer ExperienceThoughtworks
 
Modern CI/CD Pipeline Using Azure DevOps
Modern CI/CD Pipeline Using Azure DevOpsModern CI/CD Pipeline Using Azure DevOps
Modern CI/CD Pipeline Using Azure DevOpsGlobalLogic Ukraine
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOpsYosef Tavin
 
Git and GitHub | Concept about Git and GitHub Process | Git Process overview
Git and GitHub | Concept about Git and GitHub Process | Git Process overviewGit and GitHub | Concept about Git and GitHub Process | Git Process overview
Git and GitHub | Concept about Git and GitHub Process | Git Process overviewRueful Robin
 
Salesforceの導入で押さえておきたいポイント
Salesforceの導入で押さえておきたいポイントSalesforceの導入で押さえておきたいポイント
Salesforceの導入で押さえておきたいポイントTaiki Yoshikawa
 
Agile boards in Jira Are For Everyone
Agile boards in Jira Are For EveryoneAgile boards in Jira Are For Everyone
Agile boards in Jira Are For EveryoneChris Nicosia
 

What's hot (20)

Introducing GitLab
Introducing GitLabIntroducing GitLab
Introducing GitLab
 
Bitbucket pipelines
Bitbucket pipelinesBitbucket pipelines
Bitbucket pipelines
 
Pharo, Spec and GTK
Pharo, Spec and GTKPharo, Spec and GTK
Pharo, Spec and GTK
 
Argocd up and running
Argocd up and runningArgocd up and running
Argocd up and running
 
DevTools at Netflix: Culture, Speed & Innovation
DevTools at Netflix: Culture, Speed & InnovationDevTools at Netflix: Culture, Speed & Innovation
DevTools at Netflix: Culture, Speed & Innovation
 
Azure DevOps CI/CD For Beginners
Azure DevOps CI/CD  For BeginnersAzure DevOps CI/CD  For Beginners
Azure DevOps CI/CD For Beginners
 
Managing Infrastructure as a Product - Introduction to Platform Engineering
Managing Infrastructure as a Product - Introduction to Platform EngineeringManaging Infrastructure as a Product - Introduction to Platform Engineering
Managing Infrastructure as a Product - Introduction to Platform Engineering
 
Agile Methodology(SCRUM)
Agile Methodology(SCRUM)Agile Methodology(SCRUM)
Agile Methodology(SCRUM)
 
Understanding the Agile Release and Sprint Planning Process
Understanding the Agile Release and Sprint Planning Process Understanding the Agile Release and Sprint Planning Process
Understanding the Agile Release and Sprint Planning Process
 
Introduction to jira
Introduction to jiraIntroduction to jira
Introduction to jira
 
Git with bitbucket
Git with bitbucketGit with bitbucket
Git with bitbucket
 
Developer Experience
Developer ExperienceDeveloper Experience
Developer Experience
 
Modern CI/CD Pipeline Using Azure DevOps
Modern CI/CD Pipeline Using Azure DevOpsModern CI/CD Pipeline Using Azure DevOps
Modern CI/CD Pipeline Using Azure DevOps
 
DevOps & DevEx
DevOps & DevExDevOps & DevEx
DevOps & DevEx
 
BitBucket presentation
BitBucket presentationBitBucket presentation
BitBucket presentation
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOps
 
Sonarlint
SonarlintSonarlint
Sonarlint
 
Git and GitHub | Concept about Git and GitHub Process | Git Process overview
Git and GitHub | Concept about Git and GitHub Process | Git Process overviewGit and GitHub | Concept about Git and GitHub Process | Git Process overview
Git and GitHub | Concept about Git and GitHub Process | Git Process overview
 
Salesforceの導入で押さえておきたいポイント
Salesforceの導入で押さえておきたいポイントSalesforceの導入で押さえておきたいポイント
Salesforceの導入で押さえておきたいポイント
 
Agile boards in Jira Are For Everyone
Agile boards in Jira Are For EveryoneAgile boards in Jira Are For Everyone
Agile boards in Jira Are For Everyone
 

Similar to Applications in Pharo

How to Build Cross-Platform Mobile Apps Using Python
How to Build Cross-Platform Mobile Apps Using PythonHow to Build Cross-Platform Mobile Apps Using Python
How to Build Cross-Platform Mobile Apps Using PythonAndolasoft Inc
 
DESKTOP GUI APP DEVELOPMENT USING PYTHON!
DESKTOP GUI APP DEVELOPMENT USING PYTHON!DESKTOP GUI APP DEVELOPMENT USING PYTHON!
DESKTOP GUI APP DEVELOPMENT USING PYTHON!Umar Yusuf
 
DESKTOP GUI APP DEVELOPMENT USING PYTHON!
DESKTOP GUI APP DEVELOPMENT USING PYTHON!DESKTOP GUI APP DEVELOPMENT USING PYTHON!
DESKTOP GUI APP DEVELOPMENT USING PYTHON!Umar Yusuf
 
Pharo IoT Installation Improvements and Continuous Integration
Pharo IoT Installation Improvements and Continuous IntegrationPharo IoT Installation Improvements and Continuous Integration
Pharo IoT Installation Improvements and Continuous IntegrationAllex Oliveira
 
PHARO IoT: Installation Improvements and Continuous Integration
PHARO IoT: Installation Improvements and Continuous IntegrationPHARO IoT: Installation Improvements and Continuous Integration
PHARO IoT: Installation Improvements and Continuous IntegrationPharo
 
Training report 1923-b.e-eee-batchno--intern-54 (1).pdf
Training report 1923-b.e-eee-batchno--intern-54 (1).pdfTraining report 1923-b.e-eee-batchno--intern-54 (1).pdf
Training report 1923-b.e-eee-batchno--intern-54 (1).pdfYadavHarshKr
 
Create a PHP Library the right way
Create a PHP Library the right wayCreate a PHP Library the right way
Create a PHP Library the right wayChristian Varela
 
Introduction to Python Programming
Introduction to Python ProgrammingIntroduction to Python Programming
Introduction to Python ProgrammingAkhil Kaushik
 
Seminar report on python 3 course
Seminar report on python 3 courseSeminar report on python 3 course
Seminar report on python 3 courseHimanshuPanwar38
 
NLLUG 2012 - XPages Extensibility API - going deep!
NLLUG 2012 - XPages Extensibility API - going deep!NLLUG 2012 - XPages Extensibility API - going deep!
NLLUG 2012 - XPages Extensibility API - going deep!René Winkelmeyer
 
OSX/Pirrit: The blue balls of OS X adware
OSX/Pirrit: The blue balls of OS X adwareOSX/Pirrit: The blue balls of OS X adware
OSX/Pirrit: The blue balls of OS X adwareAmit Serper
 
Hello, Python
Hello, PythonHello, Python
Hello, Pythonhardwyrd
 
Run Python on windows
Run Python on windowsRun Python on windows
Run Python on windowsSitthykun LY
 
iOSDevUK Conference- DevOps for iOS Apps
iOSDevUK Conference- DevOps for iOS AppsiOSDevUK Conference- DevOps for iOS Apps
iOSDevUK Conference- DevOps for iOS AppsShashikant Jagtap
 
2013 lecture-01-introduction
2013 lecture-01-introduction2013 lecture-01-introduction
2013 lecture-01-introductionPharo
 
Seminar report On Python
Seminar report On PythonSeminar report On Python
Seminar report On PythonShivam Gupta
 
Python Online Compiler
Python Online CompilerPython Online Compiler
Python Online CompilerMr Examples
 

Similar to Applications in Pharo (20)

How to Build Cross-Platform Mobile Apps Using Python
How to Build Cross-Platform Mobile Apps Using PythonHow to Build Cross-Platform Mobile Apps Using Python
How to Build Cross-Platform Mobile Apps Using Python
 
DESKTOP GUI APP DEVELOPMENT USING PYTHON!
DESKTOP GUI APP DEVELOPMENT USING PYTHON!DESKTOP GUI APP DEVELOPMENT USING PYTHON!
DESKTOP GUI APP DEVELOPMENT USING PYTHON!
 
DESKTOP GUI APP DEVELOPMENT USING PYTHON!
DESKTOP GUI APP DEVELOPMENT USING PYTHON!DESKTOP GUI APP DEVELOPMENT USING PYTHON!
DESKTOP GUI APP DEVELOPMENT USING PYTHON!
 
Pharo IoT Installation Improvements and Continuous Integration
Pharo IoT Installation Improvements and Continuous IntegrationPharo IoT Installation Improvements and Continuous Integration
Pharo IoT Installation Improvements and Continuous Integration
 
PHARO IoT: Installation Improvements and Continuous Integration
PHARO IoT: Installation Improvements and Continuous IntegrationPHARO IoT: Installation Improvements and Continuous Integration
PHARO IoT: Installation Improvements and Continuous Integration
 
Training report 1923-b.e-eee-batchno--intern-54 (1).pdf
Training report 1923-b.e-eee-batchno--intern-54 (1).pdfTraining report 1923-b.e-eee-batchno--intern-54 (1).pdf
Training report 1923-b.e-eee-batchno--intern-54 (1).pdf
 
Create a PHP Library the right way
Create a PHP Library the right wayCreate a PHP Library the right way
Create a PHP Library the right way
 
Introduction to Python Programming
Introduction to Python ProgrammingIntroduction to Python Programming
Introduction to Python Programming
 
Seminar report on python 3 course
Seminar report on python 3 courseSeminar report on python 3 course
Seminar report on python 3 course
 
NLLUG 2012 - XPages Extensibility API - going deep!
NLLUG 2012 - XPages Extensibility API - going deep!NLLUG 2012 - XPages Extensibility API - going deep!
NLLUG 2012 - XPages Extensibility API - going deep!
 
OSX/Pirrit: The blue balls of OS X adware
OSX/Pirrit: The blue balls of OS X adwareOSX/Pirrit: The blue balls of OS X adware
OSX/Pirrit: The blue balls of OS X adware
 
Python Programming
Python ProgrammingPython Programming
Python Programming
 
Hello, Python
Hello, PythonHello, Python
Hello, Python
 
Run Python on windows
Run Python on windowsRun Python on windows
Run Python on windows
 
Python Lecture 0
Python Lecture 0Python Lecture 0
Python Lecture 0
 
iOSDevUK Conference- DevOps for iOS Apps
iOSDevUK Conference- DevOps for iOS AppsiOSDevUK Conference- DevOps for iOS Apps
iOSDevUK Conference- DevOps for iOS Apps
 
2013 lecture-01-introduction
2013 lecture-01-introduction2013 lecture-01-introduction
2013 lecture-01-introduction
 
Python 1
Python 1Python 1
Python 1
 
Seminar report On Python
Seminar report On PythonSeminar report On Python
Seminar report On Python
 
Python Online Compiler
Python Online CompilerPython Online Compiler
Python Online Compiler
 

More from ESUG

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingESUG
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in PharoESUG
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapESUG
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoESUG
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...ESUG
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsESUG
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6ESUG
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingESUG
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesESUG
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportESUG
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsESUG
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector TuningESUG
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FutureESUG
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the DebuggerESUG
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing ScoreESUG
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptESUG
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocESUG
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsESUG
 

More from ESUG (20)

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in Pharo
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector Tuning
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing Score
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
 

Recently uploaded

Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Intelisync
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 

Recently uploaded (20)

Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 

Applications in Pharo

  • 1. Pablo Tesone - Pharo Consortium ESUG 2023 Applications in Pharo Come to the Desktop Side
  • 2. 2 Pablo Tesone Pharo Consortium Engineer • 24 years trying to code • 13 years of experience in industrial applications • 9 Years working on Pharo • PhD in Dynamic Software Update • Interested in improving development tools and the daily development process. • Enthusiast of the object oriented programming and their tools. It’s a me, Pablo! @tesonep
  • 4. Desktop Applications Our Objective Today • We want: • Multiplatform Applications • Seamless Operating System Integration • Packaging and Installation • Automatic Process / CI integration 4
  • 5. We want to develop in Pharo • Cool Tools • Iterative Process • Fun & Addictive 5 We want Pharo Everywhere
  • 6. Because Pharo has a Rich Ecosystem • Tools • Frameworks • Language Support 6
  • 7. Because Pharo has a Rich Ecosystem • Tools • Frameworks • Language Support 7 We want to take advantage of them!!!
  • 8. A broad spectrum of Applications And Pharo is fi t for it 8 Native Applications Custom UI Apps
  • 9. A broad spectrum of Applications And Pharo is fi t for it 9 Native Applications Custom UI Apps Spec + GTK Bloc + Toplo Spec Cairo / Alexandrie
  • 10. A broad spectrum of Applications And Pharo is fi t for it 10 Native Applications Custom UI Apps Spec + GTK Bloc + Toplo Spec Cairo / Alexandrie Let’s Automate the Packaging and Installer
  • 11. An Example Application • Let’s take a nice game using Bloc + Toplo • Takuzu (puzzle game similar to Sudoku) 11
  • 12. An Example Application • Let’s take a nice game using Bloc + Toplo • Takuzu (puzzle game similar to Sudoku) 12 Thanks Enzo Demeulenaere
  • 13. An Example Application • Let’s make it look like a Nice App • Let’s package it and have a nice installer for it • We are going to do it for Windows and MacOS 13
  • 14. What we want (1/3) Custom Icon and Branding 14 Executable Metadata
  • 15. What we want (2/3) OS Integration 15 Installers
  • 16. What we want (3/3) Custom Error Handling 16 Cheap and automatic!!!
  • 17. The Plan 1. Load our application code 2. Add OS Integration (e.g., menus, noti fi cations, etc) 3. Load Pharo Embedded Support Project 4. Generate Scripts to automatically build and create installers. 5. Run them in our CI and distribute them 17
  • 18. 1. Load our application code 2. Add OS Integration (e.g., menus, noti fi cations, etc) 3. Load Pharo Embedded Support Project 4. Generate Scripts to automatically build and create installers. 5. Run them in our CI and distribute them The Plan 18 1. Load our application code
  • 19. 1. Load our application code 2. Add OS Integration (e.g., menus, noti fi cations, etc) 3. Load Pharo Embedded Support Project 4. Generate Scripts to automatically build and create installers. 5. Run them in our CI and distribute them The Plan 19 1. Load our application code Easy, we just use Metacello
  • 20. The Plan 20 1. Load our application code 2. Add OS Integration (e.g., menus, noti fi cations, etc) 3. Load Pharo Embedded Support Project 4. Generate Scripts to automatically build and create installers. 5. Run them in our CI and distribute them
  • 21. Add OS Integration The Plan 21 Great Existing Libraries OSX Objective C Bridge Windows Pharo-OS-Windows Pharo COM Support
  • 22. Thanks!!! Add OS Integration The Plan 22 Great Existing Libraries OSX Objective C Bridge Windows Pharo-OS-Windows Pharo COM Support Esteban Torsten
  • 23. Add OS Integration OSX Examples in Action 23 Menus Noti fi cations
  • 24. 1. Load our application code 2. Add OS Integration (e.g., menus, noti fi cations, etc) 3. Load Pharo Embedded Support Project 4. Generate Scripts to automatically build and create installers. 5. Run them in our CI and distribute them The Plan 24
  • 25. Load Pharo Embedded Support Project • A library that provides: • Custom error handling • Command Line Handlers • Generators for automatise the packaging 25
  • 26. 1. Load our application code 2. Add OS Integration (e.g., menus, noti fi cations, etc) 3. Load Pharo Embedded Support Project 4. Generate Scripts to automatically build and create installers. 5. Run them in our CI and distribute them The Plan 26
  • 27. Generate Scripts Automatically build and create packages & installers 27 OSX
  • 28. Generate Scripts Automatically build and create packages & installers 28 OSX Bash Script
  • 29. Generate Scripts Automatically build and create packages & installers 29 OSX Bash Script Installable DMG App Package
  • 30. Generate Scripts Automatically build and create packages & installers 30 Windows PowerShell Script Installable MSI Executable CMake Script
  • 31. Generate Scripts Automatically build and create packages & installers 31 Windows PowerShell Script Installable MSI Executable CMake Script Thanks!!! Christophe Guille
  • 32. 1. Load our application code 2. Add OS Integration (e.g., menus, noti fi cations, etc) 3. Load Pharo Embedded Support Project 4. Generate Scripts to automatically build and create installers. 5. Run them in our CI and distribute them The Plan 32
  • 33. Run them in our CI and distribute them Let’s run in the CI 33 Run in Github Action: • Get a Pharo Image and load our code • Generate the Scripts and execute them • Upload Artifacts • Available for OSX and Windows
  • 34. Run them in our CI and distribute them Let’s run in the CI 34 Run in Github Action: • Get a Pharo Image and load our code • Generate the Scripts and execute them • Upload Artifacts • Available for OSX and Windows
  • 35. Run them in our CI and distribute them Let’s run in the CI 35 Run in Github Action: • Get a Pharo Image and load our code • Generate the Scripts and execute them • Upload Artifacts • Available for OSX and Windows Thanks!!! Christophe Cyril Stef
  • 36. Our Complete Example Available on Github 36 tesonep/Takuzu • Windows and OSX Example • Github Actions • OSX Integration • Embedded Windows App • Bloc Application
  • 37. • Windows and OSX Example • Github Actions • OSX Integration • Embedded Windows App • Bloc Application Our Complete Example Available on Github 37 tesonep/Takuzu Open to Improve and to copy
  • 38. Future Plans Everything is Open 38 tesonep/pharo-vm-embedded-example • Adding UI to generate script • Support for Minimal Images • Moving generators outside the image • Adding support for signing / notarisation • Documentation / More Examples
  • 39. Applications in Pharo Thanks so much!!! 39 tesonep/pharo-vm-embedded-example tesonep/Takuzu Custom Icon and Branding Metadata OS Integration Error Handling Installers Automatizable