Applications in Pharo

E
ESUGESUG
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
1 de 39

Recomendados

PharoJS: Hijack the JavaScript Ecosystem por
PharoJS: Hijack the JavaScript EcosystemPharoJS: Hijack the JavaScript Ecosystem
PharoJS: Hijack the JavaScript EcosystemESUG
481 vistas48 diapositivas
Application Development with Pharo por
Application Development with PharoApplication Development with Pharo
Application Development with PharoESUG
119 vistas56 diapositivas
Pharo Virtual Machine: News from the Front por
Pharo Virtual Machine: News from the FrontPharo Virtual Machine: News from the Front
Pharo Virtual Machine: News from the FrontESUG
172 vistas110 diapositivas
Bloc for Pharo: Current State and Future Perspective por
Bloc for Pharo: Current State and Future PerspectiveBloc for Pharo: Current State and Future Perspective
Bloc for Pharo: Current State and Future PerspectiveESUG
370 vistas30 diapositivas
Pharo 10 and beyond por
 Pharo 10 and beyond Pharo 10 and beyond
Pharo 10 and beyondESUG
126 vistas32 diapositivas
Principes de L'intégration Continue por
Principes de L'intégration ContinuePrincipes de L'intégration Continue
Principes de L'intégration ContinueXavier Warzee
4.5K vistas30 diapositivas

Más contenido relacionado

La actualidad más candente

Automation of Release and Deployment Management - Maveric por
Automation of Release and Deployment Management - MavericAutomation of Release and Deployment Management - Maveric
Automation of Release and Deployment Management - MavericMaveric Systems
2.9K vistas11 diapositivas
Design patterns avec Symfony por
Design patterns avec SymfonyDesign patterns avec Symfony
Design patterns avec SymfonyMohammed Rhamnia
6.1K vistas21 diapositivas
Graffity 採用候補者の皆様へ por
Graffity 採用候補者の皆様へGraffity 採用候補者の皆様へ
Graffity 採用候補者の皆様へGraffity Inc
509 vistas57 diapositivas
SOLID : les principes à l’origine du succès de Symfony et de vos applications por
SOLID : les principes à l’origine du succès de Symfony et de vos applicationsSOLID : les principes à l’origine du succès de Symfony et de vos applications
SOLID : les principes à l’origine du succès de Symfony et de vos applicationsVladyslav Riabchenko
2.3K vistas43 diapositivas
Towards Object-centric Time-traveling Debuggers por
 Towards Object-centric Time-traveling Debuggers Towards Object-centric Time-traveling Debuggers
Towards Object-centric Time-traveling DebuggersESUG
91 vistas44 diapositivas
Introduction à DevOps por
Introduction à DevOpsIntroduction à DevOps
Introduction à DevOpsMicrosoft
9.7K vistas74 diapositivas

La actualidad más candente(20)

Automation of Release and Deployment Management - Maveric por Maveric Systems
Automation of Release and Deployment Management - MavericAutomation of Release and Deployment Management - Maveric
Automation of Release and Deployment Management - Maveric
Maveric Systems2.9K vistas
Graffity 採用候補者の皆様へ por Graffity Inc
Graffity 採用候補者の皆様へGraffity 採用候補者の皆様へ
Graffity 採用候補者の皆様へ
Graffity Inc509 vistas
SOLID : les principes à l’origine du succès de Symfony et de vos applications por Vladyslav Riabchenko
SOLID : les principes à l’origine du succès de Symfony et de vos applicationsSOLID : les principes à l’origine du succès de Symfony et de vos applications
SOLID : les principes à l’origine du succès de Symfony et de vos applications
Vladyslav Riabchenko2.3K vistas
Towards Object-centric Time-traveling Debuggers por ESUG
 Towards Object-centric Time-traveling Debuggers Towards Object-centric Time-traveling Debuggers
Towards Object-centric Time-traveling Debuggers
ESUG91 vistas
Introduction à DevOps por Microsoft
Introduction à DevOpsIntroduction à DevOps
Introduction à DevOps
Microsoft9.7K vistas
Smart modeling of smart software por Jordi Cabot
Smart modeling of smart softwareSmart modeling of smart software
Smart modeling of smart software
Jordi Cabot355 vistas
그래서 테스트 코드는 어떻게 작성하나요?.pdf por tokijh
그래서 테스트 코드는 어떻게 작성하나요?.pdf그래서 테스트 코드는 어떻게 작성하나요?.pdf
그래서 테스트 코드는 어떻게 작성하나요?.pdf
tokijh61 vistas
TST - CATIA V5 Time Saving Toolbar por Fernando Petre
 TST - CATIA V5 Time Saving Toolbar TST - CATIA V5 Time Saving Toolbar
TST - CATIA V5 Time Saving Toolbar
Fernando Petre1.2K vistas
Redmine 4.1 新機能評価ガイド <速報版> por Go Maeda
Redmine 4.1 新機能評価ガイド <速報版>Redmine 4.1 新機能評価ガイド <速報版>
Redmine 4.1 新機能評価ガイド <速報版>
Go Maeda43.7K vistas
なぜ私はソニックガーデンのプログラマに転身できたのか? por Junichi Ito
なぜ私はソニックガーデンのプログラマに転身できたのか? なぜ私はソニックガーデンのプログラマに転身できたのか?
なぜ私はソニックガーデンのプログラマに転身できたのか?
Junichi Ito71.8K vistas
Spring Cloud Into Production por Todd Miller
Spring Cloud Into ProductionSpring Cloud Into Production
Spring Cloud Into Production
Todd Miller3K vistas
Continuous Integration With Jenkins por Edureka!
Continuous Integration With JenkinsContinuous Integration With Jenkins
Continuous Integration With Jenkins
Edureka!6.5K vistas
DrupalにおけるJSON:APIの注意点 por iPride Co., Ltd.
DrupalにおけるJSON:APIの注意点DrupalにおけるJSON:APIの注意点
DrupalにおけるJSON:APIの注意点
iPride Co., Ltd.496 vistas
Formation Gratuite Total Tests par les experts Java Ippon por Ippon
Formation Gratuite Total Tests par les experts Java Ippon Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon
Ippon17.2K vistas
Intégration continue des projets PHP avec Jenkins por Hugo Hamon
Intégration continue des projets PHP avec JenkinsIntégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec Jenkins
Hugo Hamon20.1K vistas

Similar a Applications in Pharo

DESKTOP GUI APP DEVELOPMENT USING PYTHON! por
DESKTOP GUI APP DEVELOPMENT USING PYTHON!DESKTOP GUI APP DEVELOPMENT USING PYTHON!
DESKTOP GUI APP DEVELOPMENT USING PYTHON!Umar Yusuf
1.6K vistas70 diapositivas
DESKTOP GUI APP DEVELOPMENT USING PYTHON! por
DESKTOP GUI APP DEVELOPMENT USING PYTHON!DESKTOP GUI APP DEVELOPMENT USING PYTHON!
DESKTOP GUI APP DEVELOPMENT USING PYTHON!Umar Yusuf
984 vistas70 diapositivas
Pharo IoT Installation Improvements and Continuous Integration por
Pharo IoT Installation Improvements and Continuous IntegrationPharo IoT Installation Improvements and Continuous Integration
Pharo IoT Installation Improvements and Continuous IntegrationAllex Oliveira
325 vistas51 diapositivas
PHARO IoT: Installation Improvements and Continuous Integration por
PHARO IoT: Installation Improvements and Continuous IntegrationPHARO IoT: Installation Improvements and Continuous Integration
PHARO IoT: Installation Improvements and Continuous IntegrationPharo
1.1K vistas51 diapositivas
Create a PHP Library the right way por
Create a PHP Library the right wayCreate a PHP Library the right way
Create a PHP Library the right wayChristian Varela
1.4K vistas177 diapositivas
Introduction to Python Programming por
Introduction to Python ProgrammingIntroduction to Python Programming
Introduction to Python ProgrammingAkhil Kaushik
322 vistas48 diapositivas

Similar a Applications in Pharo(20)

DESKTOP GUI APP DEVELOPMENT USING PYTHON! por Umar Yusuf
DESKTOP GUI APP DEVELOPMENT USING PYTHON!DESKTOP GUI APP DEVELOPMENT USING PYTHON!
DESKTOP GUI APP DEVELOPMENT USING PYTHON!
Umar Yusuf1.6K vistas
DESKTOP GUI APP DEVELOPMENT USING PYTHON! por Umar Yusuf
DESKTOP GUI APP DEVELOPMENT USING PYTHON!DESKTOP GUI APP DEVELOPMENT USING PYTHON!
DESKTOP GUI APP DEVELOPMENT USING PYTHON!
Umar Yusuf984 vistas
Pharo IoT Installation Improvements and Continuous Integration por Allex Oliveira
Pharo IoT Installation Improvements and Continuous IntegrationPharo IoT Installation Improvements and Continuous Integration
Pharo IoT Installation Improvements and Continuous Integration
Allex Oliveira325 vistas
PHARO IoT: Installation Improvements and Continuous Integration por Pharo
PHARO IoT: Installation Improvements and Continuous IntegrationPHARO IoT: Installation Improvements and Continuous Integration
PHARO IoT: Installation Improvements and Continuous Integration
Pharo1.1K vistas
Create a PHP Library the right way por Christian Varela
Create a PHP Library the right wayCreate a PHP Library the right way
Create a PHP Library the right way
Christian Varela1.4K vistas
Introduction to Python Programming por Akhil Kaushik
Introduction to Python ProgrammingIntroduction to Python Programming
Introduction to Python Programming
Akhil Kaushik322 vistas
Seminar report on python 3 course por HimanshuPanwar38
Seminar report on python 3 courseSeminar report on python 3 course
Seminar report on python 3 course
HimanshuPanwar381.1K vistas
NLLUG 2012 - XPages Extensibility API - going deep! por René Winkelmeyer
NLLUG 2012 - XPages Extensibility API - going deep!NLLUG 2012 - XPages Extensibility API - going deep!
NLLUG 2012 - XPages Extensibility API - going deep!
René Winkelmeyer871 vistas
OSX/Pirrit: The blue balls of OS X adware por Amit Serper
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
Amit Serper672 vistas
Hello, Python por hardwyrd
Hello, PythonHello, Python
Hello, Python
hardwyrd190 vistas
Run Python on windows por Sitthykun LY
Run Python on windowsRun Python on windows
Run Python on windows
Sitthykun LY308 vistas
iOSDevUK Conference- DevOps for iOS Apps por Shashikant Jagtap
iOSDevUK Conference- DevOps for iOS AppsiOSDevUK Conference- DevOps for iOS Apps
iOSDevUK Conference- DevOps for iOS Apps
Shashikant Jagtap501 vistas
2013 lecture-01-introduction por Pharo
2013 lecture-01-introduction2013 lecture-01-introduction
2013 lecture-01-introduction
Pharo702 vistas
Seminar report On Python por Shivam Gupta
Seminar report On PythonSeminar report On Python
Seminar report On Python
Shivam Gupta37.3K vistas
(WPF + WinForms) * .NET Core = Modern Desktop por Oren Novotny
(WPF + WinForms) * .NET Core = Modern Desktop(WPF + WinForms) * .NET Core = Modern Desktop
(WPF + WinForms) * .NET Core = Modern Desktop
Oren Novotny2.1K vistas
Microsoft loves PHP. Seriously. por Jenna Hoffman
Microsoft loves PHP. Seriously.Microsoft loves PHP. Seriously.
Microsoft loves PHP. Seriously.
Jenna Hoffman2.8K vistas

Más de ESUG

Workshop: Identifying concept inventories in agile programming por
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingESUG
12 vistas16 diapositivas
Technical documentation support in Pharo por
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in PharoESUG
28 vistas39 diapositivas
The Pharo Debugger and Debugging tools: Advances and Roadmap por
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
56 vistas44 diapositivas
Sequence: Pipeline modelling in Pharo por
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoESUG
86 vistas22 diapositivas
Migration process from monolithic to micro frontend architecture in mobile ap... por
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
20 vistas35 diapositivas
Analyzing Dart Language with Pharo: Report and early results por
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
106 vistas30 diapositivas

Más de ESUG(20)

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

Último

Generic or specific? Making sensible software design decisions por
Generic or specific? Making sensible software design decisionsGeneric or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisionsBert Jan Schrijver
6 vistas60 diapositivas
DSD-INT 2023 Leveraging the results of a 3D hydrodynamic model to improve the... por
DSD-INT 2023 Leveraging the results of a 3D hydrodynamic model to improve the...DSD-INT 2023 Leveraging the results of a 3D hydrodynamic model to improve the...
DSD-INT 2023 Leveraging the results of a 3D hydrodynamic model to improve the...Deltares
6 vistas22 diapositivas
FIMA 2023 Neo4j & FS - Entity Resolution.pptx por
FIMA 2023 Neo4j & FS - Entity Resolution.pptxFIMA 2023 Neo4j & FS - Entity Resolution.pptx
FIMA 2023 Neo4j & FS - Entity Resolution.pptxNeo4j
6 vistas26 diapositivas
HarshithAkkapelli_Presentation.pdf por
HarshithAkkapelli_Presentation.pdfHarshithAkkapelli_Presentation.pdf
HarshithAkkapelli_Presentation.pdfharshithakkapelli
11 vistas16 diapositivas
Dapr Unleashed: Accelerating Microservice Development por
Dapr Unleashed: Accelerating Microservice DevelopmentDapr Unleashed: Accelerating Microservice Development
Dapr Unleashed: Accelerating Microservice DevelopmentMiroslav Janeski
10 vistas29 diapositivas
DSD-INT 2023 European Digital Twin Ocean and Delft3D FM - Dols por
DSD-INT 2023 European Digital Twin Ocean and Delft3D FM - DolsDSD-INT 2023 European Digital Twin Ocean and Delft3D FM - Dols
DSD-INT 2023 European Digital Twin Ocean and Delft3D FM - DolsDeltares
7 vistas23 diapositivas

Último(20)

Generic or specific? Making sensible software design decisions por Bert Jan Schrijver
Generic or specific? Making sensible software design decisionsGeneric or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisions
DSD-INT 2023 Leveraging the results of a 3D hydrodynamic model to improve the... por Deltares
DSD-INT 2023 Leveraging the results of a 3D hydrodynamic model to improve the...DSD-INT 2023 Leveraging the results of a 3D hydrodynamic model to improve the...
DSD-INT 2023 Leveraging the results of a 3D hydrodynamic model to improve the...
Deltares6 vistas
FIMA 2023 Neo4j & FS - Entity Resolution.pptx por Neo4j
FIMA 2023 Neo4j & FS - Entity Resolution.pptxFIMA 2023 Neo4j & FS - Entity Resolution.pptx
FIMA 2023 Neo4j & FS - Entity Resolution.pptx
Neo4j6 vistas
Dapr Unleashed: Accelerating Microservice Development por Miroslav Janeski
Dapr Unleashed: Accelerating Microservice DevelopmentDapr Unleashed: Accelerating Microservice Development
Dapr Unleashed: Accelerating Microservice Development
Miroslav Janeski10 vistas
DSD-INT 2023 European Digital Twin Ocean and Delft3D FM - Dols por Deltares
DSD-INT 2023 European Digital Twin Ocean and Delft3D FM - DolsDSD-INT 2023 European Digital Twin Ocean and Delft3D FM - Dols
DSD-INT 2023 European Digital Twin Ocean and Delft3D FM - Dols
Deltares7 vistas
DSD-INT 2023 Simulation of Coastal Hydrodynamics and Water Quality in Hong Ko... por Deltares
DSD-INT 2023 Simulation of Coastal Hydrodynamics and Water Quality in Hong Ko...DSD-INT 2023 Simulation of Coastal Hydrodynamics and Water Quality in Hong Ko...
DSD-INT 2023 Simulation of Coastal Hydrodynamics and Water Quality in Hong Ko...
Deltares14 vistas
Headless JS UG Presentation.pptx por Jack Spektor
Headless JS UG Presentation.pptxHeadless JS UG Presentation.pptx
Headless JS UG Presentation.pptx
Jack Spektor7 vistas
DSD-INT 2023 Salt intrusion Modelling of the Lauwersmeer, towards a measureme... por Deltares
DSD-INT 2023 Salt intrusion Modelling of the Lauwersmeer, towards a measureme...DSD-INT 2023 Salt intrusion Modelling of the Lauwersmeer, towards a measureme...
DSD-INT 2023 Salt intrusion Modelling of the Lauwersmeer, towards a measureme...
Deltares5 vistas
Fleet Management Software in India por Fleetable
Fleet Management Software in India Fleet Management Software in India
Fleet Management Software in India
Fleetable11 vistas
The Era of Large Language Models.pptx por AbdulVahedShaik
The Era of Large Language Models.pptxThe Era of Large Language Models.pptx
The Era of Large Language Models.pptx
AbdulVahedShaik5 vistas
Dev-HRE-Ops - Addressing the _Last Mile DevOps Challenge_ in Highly Regulated... por TomHalpin9
Dev-HRE-Ops - Addressing the _Last Mile DevOps Challenge_ in Highly Regulated...Dev-HRE-Ops - Addressing the _Last Mile DevOps Challenge_ in Highly Regulated...
Dev-HRE-Ops - Addressing the _Last Mile DevOps Challenge_ in Highly Regulated...
TomHalpin95 vistas
DSD-INT 2023 Exploring flash flood hazard reduction in arid regions using a h... por Deltares
DSD-INT 2023 Exploring flash flood hazard reduction in arid regions using a h...DSD-INT 2023 Exploring flash flood hazard reduction in arid regions using a h...
DSD-INT 2023 Exploring flash flood hazard reduction in arid regions using a h...
Deltares5 vistas
20231129 - Platform @ localhost 2023 - Application-driven infrastructure with... por sparkfabrik
20231129 - Platform @ localhost 2023 - Application-driven infrastructure with...20231129 - Platform @ localhost 2023 - Application-driven infrastructure with...
20231129 - Platform @ localhost 2023 - Application-driven infrastructure with...
sparkfabrik5 vistas
Gen Apps on Google Cloud PaLM2 and Codey APIs in Action por Márton Kodok
Gen Apps on Google Cloud PaLM2 and Codey APIs in ActionGen Apps on Google Cloud PaLM2 and Codey APIs in Action
Gen Apps on Google Cloud PaLM2 and Codey APIs in Action
Márton Kodok5 vistas
Unmasking the Dark Art of Vectored Exception Handling: Bypassing XDR and EDR ... por Donato Onofri
Unmasking the Dark Art of Vectored Exception Handling: Bypassing XDR and EDR ...Unmasking the Dark Art of Vectored Exception Handling: Bypassing XDR and EDR ...
Unmasking the Dark Art of Vectored Exception Handling: Bypassing XDR and EDR ...
Donato Onofri795 vistas
DSD-INT 2023 The Danube Hazardous Substances Model - Kovacs por Deltares
DSD-INT 2023 The Danube Hazardous Substances Model - KovacsDSD-INT 2023 The Danube Hazardous Substances Model - Kovacs
DSD-INT 2023 The Danube Hazardous Substances Model - Kovacs
Deltares8 vistas

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