SlideShare une entreprise Scribd logo
1  sur  27
Pharo
in the Corner Cases
of the Enterprise
piotr@palacz.net
01 Background, Motivation, and Driving Questions
02 Case Descriptions
(code named: X, Y, and Z)
03 Observations, Reflections, and Suggestions
04 Wrapping up and Q&A
1987 ’90s -20y -5y -3y
First Smalltalk course!
Dr. Artur Krepski,
Institute of Computer Science,
Warsaw, Poland.
Smalltalk enterprise-type projects
in Advertising, Banking, Insurance,
Telco industries, in Australia and the US.
(D/V, VW, VA, Enfin, ST/X,…)
Architect work, in different
guises (Technical, Solution,
Application, Enterprise, etc.) in
Telco, Medical, Government/State.
Using Smalltalk for
project work again
(Pharo 4/5/6)
Leaving the Big
Corp IT and Going
Independent
01 My [Smalltalk] Background
.
2018
• Small teams (<1 to 2-3 FT people)
• Small budgets
• Short timeframes
• Relative freedom of choice in approach and tooling …
• … But bearing the full risk for the choices made
• Having to assume broad responsibilities (for requirements, design, implementation,
testing, deployment, monitoring, etc.)
Being Independent typically means:
• Solutions involve both business and software elements
• Driving the solution rather than waiting for it to happen
• Dealing with the reality of underspecified requirements
• Limited opportunity for extended experimentation
• Still being open to outside-the-box solutions
Pragmatic Focus:
01 My Perspective and Potential Biases
01 Motivation and Driving Questions
• What are the areas (if any) where Pharo can be successfully used
in an enterprise [systems] context?
• What are some of the effective ways of introducing Pharo to
non-mainstream-technology-averse organizations?
• What in Pharo is attractive for the independents and small companies
working in an enterprise context?
• What in Pharo is attractive in that context and what could be improved
to increase its attractiveness?
02 Sample Corner Cases
X Legacy Archeological Dive
Recovering ’90s Social Services App for replacement
Y Creating Self-Service Portals
Web-based Data Validation On-Demand for End-Users
Z Chatbot-Enablement
Grokking Chatbot, Corpus for a Financial System
1 3
2 4
X Legacy Archeological Dive
Recovering ’90s Social Services App for Replacement
1990’s System to manage social service-related
funds (~$6B/yr) between the State and the
Counties (53 offices, 4k employees). No longer
maintainable.
Before replacing it/creating an RFP, it needs:
• Use Cases, Business Rules
• A Component/Realization Model
• Navigation, Control and Data Flows, etc.
Background and Goals Tooling
• FoxPro IDE
• FoxPro
decompiler
• Sparx EA
• Pharo 4 (mid-2015)
• GT
• PetitParser
• Roassal2
• Telescope
Challenges and Insights
• No implementation documentation or know-
how available; implementation language is
complex and has no grammar available
• Manual analysis impractical; combination of
automated processing and manual input
required
• Tool support and visualizations needed;
static analysis should provide usable
information for the effort
Outcomes
• Use Cases established (Sparx EA)
• An environment for examining relationships
among realization artifacts, supporting
visualizing, navigating, annotating these
relationships
• Use Cases mapped to Realization artifacts
• Identification of key components and key areas
for Business Rules analysis
Relationships among the Artifacts
• 125 Tables
• 335 Programs (incl. code pieces in
Screens, Reports, and Libraries)
• 126 Screens
• 146 Reports
Realization Artifacts
Relationship Type Applies To Count
Reads Or Writes To Components interacting with Tables 1122
Opens UI Screens opening UIs (Screens or Reports) 562
Executes Programs or Procedures executing other
Programs or Procedures
560
Reads From Read accessed from Tables, typically in Reports 397
This is a Direct Data Entry app
% of Screens – Tables direct interactions
This is a Report Generation app
% Tables - Reports vs Screens - Tables
Support for Business Process is limited
% User-initiated interactions in the Screens
Simple inter-Program interactions
# Program-Program vs # Program
…
Derived Characterization
X Legacy Archeology Dive
Top-Level Artifacts and Analysis
X Legacy Archeological Dive
Exploration Workspace, Tools, Drill-Downs
Sparx EA
Pharo 4
1 3
2 4
Y Self-Service Data Validation Portals
Fast Data Validation and Reporting for Data Migration
Part of a +$500M project replacing +1000
disparate financial systems in a single State.
• This requires multi-stage data validation
and migration as part of on-boarding.
• The existing processing procedures could
not scale.
Background and Goals Tooling
• Pharo 5/6 (2016-18)
• Seaside + Bootstrap + extensions
• NeoCSV + DataFrame + extensions
• STON
• Used pieces of Deltawerken’s Story
Board
Challenges and Insights
• Replace the initial stages of
validation/migration at the target with self-
service using internal portals
• Allow data set submittal for integration
only after quality thresholds have been
met in self-service portals
• Data layout specs are in flux
• Error/warning rules are in flux
Outcomes
• Initially, a single Portal for financial data
• Over time, two additional separate portals for
other data set types: file interfaces and
security data
• +500 registered users on a single Portal
instance
• Fast processing between page switches
• Downloadable reports
• Support for Validation Lifecycle
Y Self-Service Data Validation Portals
Fast Data Validation and Reporting for Data Migration
Trivial Sample: a Web Page Fragment
Y Self-Service Data Validation Portals
Spec-Driven Validation: Field-Level Simple Samples
Field 'VIN' 'Asset VIN’
Conditionally Required IF: 'ASSET_TYPE’ value is equal to: '060'
Type: AlphaNum
Size max: 18 chars
Field 'ZZ_PROJECT' 'Legacy Chartfield - Project'
Optional
Explicit error conditions:
IF (('ZZ_PROJECT' has no value) AND ('ZZ_FUND' value is equal to: '0890'))
THEN FAIL with message: 'Project ID is required if ZZ_FUND = 0890.'
Type: AlphaNum
Size min: 0 chars max: 15 chars
A Layout Def may have +100 field definitions; they can be inter-dependent
Y Self-Service Data Validation Portals
Spec-Driven Validation: Row-Level Simple Samples
ROW Rule 'Rule 6009 Defined in ROLE_MAPPING':
IF (ROW has ALL values in FIELDS: 'RM.ZZ_AR_ITEM_RQST', 'RM.ZZ_AR_ITEM_PROC')
THEN ( WARN with MESSAGE: 'Assignment of roles (AR Item Requestor and AR Item Processor) are in conflict
with State Separation of Duties (SOD) policy.')
ROW Rule '50XY Defined in REQUISITION_APPROVER':
IF ((ROW has a value in FIELD: 'RA.ZZ_REQ_AD_HOC_APPR')
AND (ROW has at LEAST ONE value in FIELDS: 'RA.ZZ_REQ_APPROVER_1', 'RA.ZZ_REQ_APPROVER_2'))
THEN ( FAIL with MESSAGE: 'If Requisitions Ad Hoc Approver is identified,
then other Requisitions approver levels must not be identified')
A Layout Def may have ~60 row-level rules, some inhumanly long (400+ lines) and inter-dependent
1 3
2 4
Z Chatbot-Enablement
Making sense of APIs and Long-Term Maintainability
• Provide Chatbot services to +2k end-users
• Determine simple ways of interacting with
IBM Watson
• Integrate Chatbot with existing PeopleSoft
LOB system
• Identify what is needed for maintaining the
Corpus by the SMEs
Background and Goals Tooling
• Pharo 6
• Seaside
• Bootstrap
• Telescope
• DataFrame
Challenges and Insights
• Simple REST interactions with complex
node.js or JDK SDKs provided by IBM
• Most first/naïve tests fail (terminology …)
• Inherited PoC with JS/Angular2 code
neither easily testable, documented, nor
maintainable
• Excel-based initial Corpus has
logical/structural problems and is not
maintainable
• REST API exploratory tooling needed
• Corpus exploratory tooling needed
Outcomes
• REST API testbed to figure out Watson
authentication and authorization conventions
• Visualizing for the SMEs existing and target
Corpus structure
• Exploring integration mechanisms with
PeopleSoft
• WIP; future: Web-based multi-user Corpus
editor with version control?
Z Chatbot-Enablement
Towards a Reasonable Structure/Maintainable Corpus Pharo 6 + Telescope + Corpus Model
Proposed Corpus Structure – Interactive Exploration
Initial Excel Corpus and its Issues
Z Chatbot-Enablement
Dealing with the Unnecessary Complexity
IntelliJ + Watson JDK API
Z Chatbot-Enablement
Making Sense of the Provider API & its Pitfalls
Pharo 6 + Zinc + Teapot + Cannibalized Twilio
02 Sample Corner Cases – Wrapping Up
• Any visible similarities?
• Any patterns perhaps?
• Any Questions?
Perspective
and
Biases• Areas where Pharo can be used successfully in the enterprise
• Ways of introducing Pharo to non-mainstream-technology-averse orgs
• Attractive facets of Pharo for the independents and small IT companies
• Areas for improvement in Pharo to increase its attractiveness
03 Observations and Reflections
Generally, any area with the following features is a promising shot:
• Where a solution must be provided at a fraction of time and cost
and resources, compared to what the mainstream approaches require
• Where out-of-the-box approach might be the only way to go
in order to satisfy the above
• Which is not central to the Enterprise (not a LOB system) but still
has a demonstrable business value
03 Fertile Enterprise Areas for Pharo
It helps (at least for starters) if:
• There is an urgency about having the solution
• It has a known (non-eternal) lifespan
• It does not require massive scalability
In non-mainstream-technology-averse organizations:
• Do use Pharo to provide a solution
• … to tangible and clear business problems
• … rather than to solely technical problems
• Do not make it a panaceum (silver bullet):
• It cannot be a solution to vague or incorrect requirements
• It cannot be a solution to fundamental SDLC problems, etc.
• Do not introduce it solely on its technical merits:
• This is likely to be a non-starter or even an end to the conversation
03 Introducing Pharo to Non-Friendlies
Perspective
and
Biases
Build acceptability on:
• Delivering the solution in the first place, despite the constraints
• Adopting reasonable (unit, integration, functional) testing to decrease reliance
on the testing performed by others
• Making the solution modifiable and maintainable
• Improving the functional scope and reliability over time in a predictable way
03 Making Pharo Acceptable
Perspective
and
Biases
• Open Source: less because of the cost, more of the typical red tape
and procurement cycle that is capable of killing any promising approach; and because it is Source
after all
• Location, location Productivity, Productivity, Productivity!
• Habitability, moldability, and the overall unmatched pleasantness of working
in the environment
• Small hardware/resource demands (compared to the mainstream)
• Standard Class Library and a number of good facilities (Seaside, Zinc, parser build
ers, etc.)
• Small but passionate community with many young people
03 Attractive Facets of Pharo
Perspective
and
Biases
• Making the habit of providing at least a minimal documentation of the submitted
packages
• Many packages do not have class comments or even package comments
• Unfortunately, this can be a self-disqualification
• Creating a curated list of Pharo packages on GitHub?
• Improvements in Version and Configuration Control
• Keeping around what has worked just fine (e.g., gitfiletree)
• Being clear about the status and road map of key components (Iceberg?)
• Having reliable dependency specs in packages that work when loading
• Using CI to test dependencies of key packages?
03 Areas for Improvement, 1 of 2
Perspective
and
Biases
• Better information about the level of maturity of a given tool or package
• Maturity levels in Squeak are useful
• Is there a way of mechanically approximating the maturity level?
• Better managing of the release cycle:
• Reconsidering the push for the bleeding edge
• Perhaps even/odd-numbered stable/bleeding edge releases?
• Clarity about fitness-for-purpose of the new features/tools
• Keeping things that work available
• Promoting how small operators (including the independents) can
support development of Pharo, with emphasis on the financial support and what
this can buy everyone
03 Areas for Improvement, 2 of 2
Over the years, I came to believe that the actual value of (a specific piece of)
technology lies in its ability to change people’s attitudes and behaviors in IT.
Pharo/Smalltalk has that ability.
Starting with the small or the non-central (the corner cases)
within the big and the complex (the enterprise) can help realize
that capability, while producing good/usable solutions and making
the enterprise a bit more bearable in the process.
04 Final Thoughts
Thank you
Comments, suggestions, feedback, etc.: please email piotr@palacz.net

Contenu connexe

Similaire à Pharo in Corner Cases of the Enterprise

Kalaiselvi_8 Years_Support Analyst
Kalaiselvi_8 Years_Support AnalystKalaiselvi_8 Years_Support Analyst
Kalaiselvi_8 Years_Support Analyst
Kalaiselvi Pounraj
 
Analysis Questionnaire - White Paper
Analysis Questionnaire - White PaperAnalysis Questionnaire - White Paper
Analysis Questionnaire - White Paper
Saurabh Goel
 
EA Governance as IT Sustainability (NY IT Leadership Academy Apr 2013)
EA Governance as IT Sustainability (NY IT Leadership Academy Apr 2013)EA Governance as IT Sustainability (NY IT Leadership Academy Apr 2013)
EA Governance as IT Sustainability (NY IT Leadership Academy Apr 2013)
Eric Stephens
 
Systems analyst scpo chronological 2013
Systems analyst scpo chronological 2013Systems analyst scpo chronological 2013
Systems analyst scpo chronological 2013
Rob Soper
 
Pradeep_ETL Testing_CV with 3 years of Exerience
Pradeep_ETL Testing_CV with 3 years of ExeriencePradeep_ETL Testing_CV with 3 years of Exerience
Pradeep_ETL Testing_CV with 3 years of Exerience
Pradeep Shahapur
 

Similaire à Pharo in Corner Cases of the Enterprise (20)

Kalaiselvi_8 Years_Support Analyst
Kalaiselvi_8 Years_Support AnalystKalaiselvi_8 Years_Support Analyst
Kalaiselvi_8 Years_Support Analyst
 
Migrating to the cloud
Migrating to the cloudMigrating to the cloud
Migrating to the cloud
 
Blockchain workshop design thinking and technical workshop
Blockchain workshop   design thinking and technical workshopBlockchain workshop   design thinking and technical workshop
Blockchain workshop design thinking and technical workshop
 
DRM Webinar Series, PART 2: Concerned You're Not Getting the Most Out of Orac...
DRM Webinar Series, PART 2: Concerned You're Not Getting the Most Out of Orac...DRM Webinar Series, PART 2: Concerned You're Not Getting the Most Out of Orac...
DRM Webinar Series, PART 2: Concerned You're Not Getting the Most Out of Orac...
 
Connected Field Service and Resource Scheduling Optimization
Connected Field Service and Resource Scheduling OptimizationConnected Field Service and Resource Scheduling Optimization
Connected Field Service and Resource Scheduling Optimization
 
Shuchi_Agrawal
Shuchi_AgrawalShuchi_Agrawal
Shuchi_Agrawal
 
Kota_Udayachandrakumar
Kota_UdayachandrakumarKota_Udayachandrakumar
Kota_Udayachandrakumar
 
Tapan Kumar
Tapan KumarTapan Kumar
Tapan Kumar
 
stackArmor - FedRAMP and 800-171 compliant cloud solutions
stackArmor - FedRAMP and 800-171 compliant cloud solutionsstackArmor - FedRAMP and 800-171 compliant cloud solutions
stackArmor - FedRAMP and 800-171 compliant cloud solutions
 
Analysis Questionnaire - White Paper
Analysis Questionnaire - White PaperAnalysis Questionnaire - White Paper
Analysis Questionnaire - White Paper
 
Gartner pace and bi-modal models
Gartner pace and bi-modal modelsGartner pace and bi-modal models
Gartner pace and bi-modal models
 
Rohit Resume
Rohit ResumeRohit Resume
Rohit Resume
 
Resume quaish abuzer
Resume quaish abuzerResume quaish abuzer
Resume quaish abuzer
 
Migrating SOA
Migrating SOAMigrating SOA
Migrating SOA
 
Soa To The Rescue
Soa To The RescueSoa To The Rescue
Soa To The Rescue
 
EA Governance as IT Sustainability (NY IT Leadership Academy Apr 2013)
EA Governance as IT Sustainability (NY IT Leadership Academy Apr 2013)EA Governance as IT Sustainability (NY IT Leadership Academy Apr 2013)
EA Governance as IT Sustainability (NY IT Leadership Academy Apr 2013)
 
Systems analyst scpo chronological 2013
Systems analyst scpo chronological 2013Systems analyst scpo chronological 2013
Systems analyst scpo chronological 2013
 
CV_184636_Srilakshmi_Bhagavathula
CV_184636_Srilakshmi_BhagavathulaCV_184636_Srilakshmi_Bhagavathula
CV_184636_Srilakshmi_Bhagavathula
 
Pradeep_ETL Testing_CV with 3 years of Exerience
Pradeep_ETL Testing_CV with 3 years of ExeriencePradeep_ETL Testing_CV with 3 years of Exerience
Pradeep_ETL Testing_CV with 3 years of Exerience
 
Migrating to Alfresco Part II: The “How” – Tools & Best Practices for Renovat...
Migrating to Alfresco Part II: The “How” – Tools & Best Practices for Renovat...Migrating to Alfresco Part II: The “How” – Tools & Best Practices for Renovat...
Migrating to Alfresco Part II: The “How” – Tools & Best Practices for Renovat...
 

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 programming
ESUG
 
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
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...
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 results
ESUG
 
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
ESUG
 
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
ESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
ESUG
 
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
ESUG
 
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
ESUG
 
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
ESUG
 
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
ESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
ESUG
 
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
ESUG
 

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

Dernier (20)

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
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...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 

Pharo in Corner Cases of the Enterprise

  • 1. Pharo in the Corner Cases of the Enterprise piotr@palacz.net
  • 2. 01 Background, Motivation, and Driving Questions 02 Case Descriptions (code named: X, Y, and Z) 03 Observations, Reflections, and Suggestions 04 Wrapping up and Q&A
  • 3. 1987 ’90s -20y -5y -3y First Smalltalk course! Dr. Artur Krepski, Institute of Computer Science, Warsaw, Poland. Smalltalk enterprise-type projects in Advertising, Banking, Insurance, Telco industries, in Australia and the US. (D/V, VW, VA, Enfin, ST/X,…) Architect work, in different guises (Technical, Solution, Application, Enterprise, etc.) in Telco, Medical, Government/State. Using Smalltalk for project work again (Pharo 4/5/6) Leaving the Big Corp IT and Going Independent 01 My [Smalltalk] Background . 2018
  • 4. • Small teams (<1 to 2-3 FT people) • Small budgets • Short timeframes • Relative freedom of choice in approach and tooling … • … But bearing the full risk for the choices made • Having to assume broad responsibilities (for requirements, design, implementation, testing, deployment, monitoring, etc.) Being Independent typically means: • Solutions involve both business and software elements • Driving the solution rather than waiting for it to happen • Dealing with the reality of underspecified requirements • Limited opportunity for extended experimentation • Still being open to outside-the-box solutions Pragmatic Focus: 01 My Perspective and Potential Biases
  • 5. 01 Motivation and Driving Questions • What are the areas (if any) where Pharo can be successfully used in an enterprise [systems] context? • What are some of the effective ways of introducing Pharo to non-mainstream-technology-averse organizations? • What in Pharo is attractive for the independents and small companies working in an enterprise context? • What in Pharo is attractive in that context and what could be improved to increase its attractiveness?
  • 6. 02 Sample Corner Cases X Legacy Archeological Dive Recovering ’90s Social Services App for replacement Y Creating Self-Service Portals Web-based Data Validation On-Demand for End-Users Z Chatbot-Enablement Grokking Chatbot, Corpus for a Financial System
  • 7. 1 3 2 4 X Legacy Archeological Dive Recovering ’90s Social Services App for Replacement 1990’s System to manage social service-related funds (~$6B/yr) between the State and the Counties (53 offices, 4k employees). No longer maintainable. Before replacing it/creating an RFP, it needs: • Use Cases, Business Rules • A Component/Realization Model • Navigation, Control and Data Flows, etc. Background and Goals Tooling • FoxPro IDE • FoxPro decompiler • Sparx EA • Pharo 4 (mid-2015) • GT • PetitParser • Roassal2 • Telescope Challenges and Insights • No implementation documentation or know- how available; implementation language is complex and has no grammar available • Manual analysis impractical; combination of automated processing and manual input required • Tool support and visualizations needed; static analysis should provide usable information for the effort Outcomes • Use Cases established (Sparx EA) • An environment for examining relationships among realization artifacts, supporting visualizing, navigating, annotating these relationships • Use Cases mapped to Realization artifacts • Identification of key components and key areas for Business Rules analysis
  • 8. Relationships among the Artifacts • 125 Tables • 335 Programs (incl. code pieces in Screens, Reports, and Libraries) • 126 Screens • 146 Reports Realization Artifacts Relationship Type Applies To Count Reads Or Writes To Components interacting with Tables 1122 Opens UI Screens opening UIs (Screens or Reports) 562 Executes Programs or Procedures executing other Programs or Procedures 560 Reads From Read accessed from Tables, typically in Reports 397 This is a Direct Data Entry app % of Screens – Tables direct interactions This is a Report Generation app % Tables - Reports vs Screens - Tables Support for Business Process is limited % User-initiated interactions in the Screens Simple inter-Program interactions # Program-Program vs # Program … Derived Characterization X Legacy Archeology Dive Top-Level Artifacts and Analysis
  • 9. X Legacy Archeological Dive Exploration Workspace, Tools, Drill-Downs Sparx EA Pharo 4
  • 10. 1 3 2 4 Y Self-Service Data Validation Portals Fast Data Validation and Reporting for Data Migration Part of a +$500M project replacing +1000 disparate financial systems in a single State. • This requires multi-stage data validation and migration as part of on-boarding. • The existing processing procedures could not scale. Background and Goals Tooling • Pharo 5/6 (2016-18) • Seaside + Bootstrap + extensions • NeoCSV + DataFrame + extensions • STON • Used pieces of Deltawerken’s Story Board Challenges and Insights • Replace the initial stages of validation/migration at the target with self- service using internal portals • Allow data set submittal for integration only after quality thresholds have been met in self-service portals • Data layout specs are in flux • Error/warning rules are in flux Outcomes • Initially, a single Portal for financial data • Over time, two additional separate portals for other data set types: file interfaces and security data • +500 registered users on a single Portal instance • Fast processing between page switches • Downloadable reports • Support for Validation Lifecycle
  • 11. Y Self-Service Data Validation Portals Fast Data Validation and Reporting for Data Migration Trivial Sample: a Web Page Fragment
  • 12. Y Self-Service Data Validation Portals Spec-Driven Validation: Field-Level Simple Samples Field 'VIN' 'Asset VIN’ Conditionally Required IF: 'ASSET_TYPE’ value is equal to: '060' Type: AlphaNum Size max: 18 chars Field 'ZZ_PROJECT' 'Legacy Chartfield - Project' Optional Explicit error conditions: IF (('ZZ_PROJECT' has no value) AND ('ZZ_FUND' value is equal to: '0890')) THEN FAIL with message: 'Project ID is required if ZZ_FUND = 0890.' Type: AlphaNum Size min: 0 chars max: 15 chars A Layout Def may have +100 field definitions; they can be inter-dependent
  • 13. Y Self-Service Data Validation Portals Spec-Driven Validation: Row-Level Simple Samples ROW Rule 'Rule 6009 Defined in ROLE_MAPPING': IF (ROW has ALL values in FIELDS: 'RM.ZZ_AR_ITEM_RQST', 'RM.ZZ_AR_ITEM_PROC') THEN ( WARN with MESSAGE: 'Assignment of roles (AR Item Requestor and AR Item Processor) are in conflict with State Separation of Duties (SOD) policy.') ROW Rule '50XY Defined in REQUISITION_APPROVER': IF ((ROW has a value in FIELD: 'RA.ZZ_REQ_AD_HOC_APPR') AND (ROW has at LEAST ONE value in FIELDS: 'RA.ZZ_REQ_APPROVER_1', 'RA.ZZ_REQ_APPROVER_2')) THEN ( FAIL with MESSAGE: 'If Requisitions Ad Hoc Approver is identified, then other Requisitions approver levels must not be identified') A Layout Def may have ~60 row-level rules, some inhumanly long (400+ lines) and inter-dependent
  • 14. 1 3 2 4 Z Chatbot-Enablement Making sense of APIs and Long-Term Maintainability • Provide Chatbot services to +2k end-users • Determine simple ways of interacting with IBM Watson • Integrate Chatbot with existing PeopleSoft LOB system • Identify what is needed for maintaining the Corpus by the SMEs Background and Goals Tooling • Pharo 6 • Seaside • Bootstrap • Telescope • DataFrame Challenges and Insights • Simple REST interactions with complex node.js or JDK SDKs provided by IBM • Most first/naïve tests fail (terminology …) • Inherited PoC with JS/Angular2 code neither easily testable, documented, nor maintainable • Excel-based initial Corpus has logical/structural problems and is not maintainable • REST API exploratory tooling needed • Corpus exploratory tooling needed Outcomes • REST API testbed to figure out Watson authentication and authorization conventions • Visualizing for the SMEs existing and target Corpus structure • Exploring integration mechanisms with PeopleSoft • WIP; future: Web-based multi-user Corpus editor with version control?
  • 15. Z Chatbot-Enablement Towards a Reasonable Structure/Maintainable Corpus Pharo 6 + Telescope + Corpus Model Proposed Corpus Structure – Interactive Exploration Initial Excel Corpus and its Issues
  • 16. Z Chatbot-Enablement Dealing with the Unnecessary Complexity IntelliJ + Watson JDK API
  • 17. Z Chatbot-Enablement Making Sense of the Provider API & its Pitfalls Pharo 6 + Zinc + Teapot + Cannibalized Twilio
  • 18. 02 Sample Corner Cases – Wrapping Up • Any visible similarities? • Any patterns perhaps? • Any Questions?
  • 19. Perspective and Biases• Areas where Pharo can be used successfully in the enterprise • Ways of introducing Pharo to non-mainstream-technology-averse orgs • Attractive facets of Pharo for the independents and small IT companies • Areas for improvement in Pharo to increase its attractiveness 03 Observations and Reflections
  • 20. Generally, any area with the following features is a promising shot: • Where a solution must be provided at a fraction of time and cost and resources, compared to what the mainstream approaches require • Where out-of-the-box approach might be the only way to go in order to satisfy the above • Which is not central to the Enterprise (not a LOB system) but still has a demonstrable business value 03 Fertile Enterprise Areas for Pharo It helps (at least for starters) if: • There is an urgency about having the solution • It has a known (non-eternal) lifespan • It does not require massive scalability
  • 21. In non-mainstream-technology-averse organizations: • Do use Pharo to provide a solution • … to tangible and clear business problems • … rather than to solely technical problems • Do not make it a panaceum (silver bullet): • It cannot be a solution to vague or incorrect requirements • It cannot be a solution to fundamental SDLC problems, etc. • Do not introduce it solely on its technical merits: • This is likely to be a non-starter or even an end to the conversation 03 Introducing Pharo to Non-Friendlies
  • 22. Perspective and Biases Build acceptability on: • Delivering the solution in the first place, despite the constraints • Adopting reasonable (unit, integration, functional) testing to decrease reliance on the testing performed by others • Making the solution modifiable and maintainable • Improving the functional scope and reliability over time in a predictable way 03 Making Pharo Acceptable
  • 23. Perspective and Biases • Open Source: less because of the cost, more of the typical red tape and procurement cycle that is capable of killing any promising approach; and because it is Source after all • Location, location Productivity, Productivity, Productivity! • Habitability, moldability, and the overall unmatched pleasantness of working in the environment • Small hardware/resource demands (compared to the mainstream) • Standard Class Library and a number of good facilities (Seaside, Zinc, parser build ers, etc.) • Small but passionate community with many young people 03 Attractive Facets of Pharo
  • 24. Perspective and Biases • Making the habit of providing at least a minimal documentation of the submitted packages • Many packages do not have class comments or even package comments • Unfortunately, this can be a self-disqualification • Creating a curated list of Pharo packages on GitHub? • Improvements in Version and Configuration Control • Keeping around what has worked just fine (e.g., gitfiletree) • Being clear about the status and road map of key components (Iceberg?) • Having reliable dependency specs in packages that work when loading • Using CI to test dependencies of key packages? 03 Areas for Improvement, 1 of 2
  • 25. Perspective and Biases • Better information about the level of maturity of a given tool or package • Maturity levels in Squeak are useful • Is there a way of mechanically approximating the maturity level? • Better managing of the release cycle: • Reconsidering the push for the bleeding edge • Perhaps even/odd-numbered stable/bleeding edge releases? • Clarity about fitness-for-purpose of the new features/tools • Keeping things that work available • Promoting how small operators (including the independents) can support development of Pharo, with emphasis on the financial support and what this can buy everyone 03 Areas for Improvement, 2 of 2
  • 26. Over the years, I came to believe that the actual value of (a specific piece of) technology lies in its ability to change people’s attitudes and behaviors in IT. Pharo/Smalltalk has that ability. Starting with the small or the non-central (the corner cases) within the big and the complex (the enterprise) can help realize that capability, while producing good/usable solutions and making the enterprise a bit more bearable in the process. 04 Final Thoughts
  • 27. Thank you Comments, suggestions, feedback, etc.: please email piotr@palacz.net