George Wilson presented on modern cloud architecture and automation for websites built with content management systems like Joomla. He demonstrated how to automate the deployment of a Joomla site on AWS using just 7 commands and a configuration file. This included uploading the code, creating the application version, and provisioning the environment. Wilson discussed the rise of using CLIs and APIs to manage websites and their content programmatically. Documenting APIs with OpenAPI/Swagger was presented as a best practice. While these techniques may not apply to all Joomla sites, Wilson argued they are relevant for many sites in Joomla's target markets that prioritize agility and automation.
Flexible Permissions Management with ACL TemplatesJeff Potts
This is was presented as an ignite-style lightning talk at DevCon 2018 in Lisbon. It discusses an open source add-on called ACL Templates which can be used to separate ACL settings from code.
Alfresco DevCon 2019 Performance Tools of the TradeLuis Colorado
Discover tips and tools that will help you to keep your Alfresco environment in shape. Most of the best tools are free or Open Source, and this presentation will guide you through the steps to improve the performance of your system.
SymfonyCon Cluj 2017 - Symfony at OpenSkyPablo Godel
OpenSky is one of the first large ecommerce platforms to use Symfony2 and has been running on it for many years. On this talk we share how we use the framework and many tips about workflow, testing, deployment, Doctrine, migrations and much more.
Flexible Permissions Management with ACL TemplatesJeff Potts
This is was presented as an ignite-style lightning talk at DevCon 2018 in Lisbon. It discusses an open source add-on called ACL Templates which can be used to separate ACL settings from code.
Alfresco DevCon 2019 Performance Tools of the TradeLuis Colorado
Discover tips and tools that will help you to keep your Alfresco environment in shape. Most of the best tools are free or Open Source, and this presentation will guide you through the steps to improve the performance of your system.
SymfonyCon Cluj 2017 - Symfony at OpenSkyPablo Godel
OpenSky is one of the first large ecommerce platforms to use Symfony2 and has been running on it for many years. On this talk we share how we use the framework and many tips about workflow, testing, deployment, Doctrine, migrations and much more.
CUST-10 Customizing the Upload File(s) dialog in Alfresco ShareAlfresco Software
Many Alfresco projects require customizations to the Share user interface that go beyond the normal configuration. This usually involves changing/overriding Repository Web Scripts and Surf Web Scripts, updating JavaScript and CSS files, coding with the Yahoo UI Library, etc. This session will customize the Alfresco Share Upload File(s) dialog and show you how to: Add Widgets to the Upload File(s) dialog, Override Surf Web Scripts, Override/Update JavaScript and CSS files, Write Repository Web Scripts, Call Web Scripts from Yahoo UI Library code, and Setup a build project for these customizations. This session will present the advanced customization concepts via hands-on tutorial and slides.
DevCon 2018 - 5 ways to use AWS with AlfrescoGavin Cornwell
Learn how to leverage AWS with Alfresco. We will look at current and future methods for deploying onto AWS, how you can use serverless and AI technologies to power your next generation extensions and how we’re using AWS internally to manage online trials and improve user experience.
In The Trenches With Tomster, Upgrading Ember.js & Ember DataStacy London
A few months after I started working with Ember.js & Ember Data at my new job we began a project to upgrade both. There were parts that were a breeze and others that were quite tricky. This talk walks you through some of the challenges we faced and how we solved them as well as how we began to prepare for the Ember 2.x architectural shift. Hopefully this talk will help save you some time when you decide to upgrade your Ember web application.
Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...Martin Bergljung
In this talk you will learn how to set up an Alfresco SDK 3.0 multi module project that could be used in a larger consulting project context. Extension modules will be standalone and versioned and released independently in the Nexus 3 Repository Manager. The talk also includes a look at defining a Parent POM and an Aggregator POM for your SDK 3 project solution.
Integrating Alfresco @ Scale (via event-driven micro-services)J V
Alfresco DevCon 2018 (Lisbon) - https://devcon.alfresco.com/
Alfresco provides a rich set of options for integrating third-party systems with services across the Digital Business Platform. We will deep-dive into the architecture of the new Alfresco Integration Services framework – a set of event-driven micro-services that can be easily deployed & scaled.
https://www.youtube.com/watch?v=TyB-t7wsDEE
ADF Basics and Beyond - Alfresco Devcon 2018Mario Romano
If you want to know everything about ADF its architecture, technologies and best practices you can't skip this talk. Join us also to know more about what we released in November as part of ADF 2.0 and what is our vision for the future.
Docker and serverless Randstad Jan 2019: OpenFaaS Serverless: when functions ...Edward Wilde
This talk introduces OpenFaaS, an open source platform for serverless functions. We begin by installing, running the platform and invoking a machine learning function within 60 second (ish). Next we step up and look at the high level platform architecture and key pillars of OpenFaaS: developer first, operator friendly and community focused. We close by looking at a multiuser platform built on top OpenFaas.
The objective of this talk is to introduce you to OpenFaaS the serverless platform and OpenFaaS cloud the multi-user environment for practicing git ops with functions.
The Apereo OAE Bootcamp offers an introduction into back-end and front-end development for the Apereo OAE project.
The back-end development part focuses on learning the different extension points behind the scenes in the service layer of OAE. A back-end component for OAE that exposes a REST API is built from scratch.
Back-end development topics include:
- Node.js NPM module system
- OAE back-end application life-cycle
- Data-modelling with Apache Cassandra and writing CQL queries from Node.js
- Using the OAE APIs to expose back-end functionality for the web VIA RESTful APIs
- Writing back-end unit tests using Grunt and Mocha. If time permits, the following will also be covered:
- Integrating with OAE's ElasticSearch query and index functionality
- Integrating with OAE's Activity and Notifications functionality
- Integration with OAE's Admin Configuration functionality
The front-end development part focuses on writing a UI widget using the REST APIs developed in the back-end development part.
Front-end development topics include:
- Integrating with the OAE Widget loading system
- Writing internationalizable templates with TrimPath and the widget i18n and l10n functionality
- Interacting with the core OAE UI APIs
- Using bootstrap 3 to design responsive UI layouts for your widgets
- Writing front-end unit tests using Grunt and CasperJS
Being a WordPress developer means that our main programming language is PHP. Which works for building websites but not for running tasks. In this talk I will share my experience using Node.js as a platform to build on. Explaining why I have chosen for Node.js and show you how I used Node.js to build microservices that are supporting my WordPress projects.
Flexible UI Components for a Multi-Framework WorldKevin Ball
Slides from Flexible UI Components talk given at Web Unleashed 2017
Build UI components that work seamlessly in every JavaScript Framework.
Your core UI elements shouldn’t have to be different for your marketing site than they are in your application just because the former uses jQuery while the latter is built using Angular or React.
Lessons learned from work on ZURB Foundation 7.
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20Michael Lihs
Presentation about open source tools to set up continuous integration and continuous deployment. Covers Git, Gitlab, Chef, Vagrant, Jenkins, Gatling, Dashing, TYPO3 Surf and some other tools. Shows some best practices for testing with Behat and Functional Testing.
CUST-10 Customizing the Upload File(s) dialog in Alfresco ShareAlfresco Software
Many Alfresco projects require customizations to the Share user interface that go beyond the normal configuration. This usually involves changing/overriding Repository Web Scripts and Surf Web Scripts, updating JavaScript and CSS files, coding with the Yahoo UI Library, etc. This session will customize the Alfresco Share Upload File(s) dialog and show you how to: Add Widgets to the Upload File(s) dialog, Override Surf Web Scripts, Override/Update JavaScript and CSS files, Write Repository Web Scripts, Call Web Scripts from Yahoo UI Library code, and Setup a build project for these customizations. This session will present the advanced customization concepts via hands-on tutorial and slides.
DevCon 2018 - 5 ways to use AWS with AlfrescoGavin Cornwell
Learn how to leverage AWS with Alfresco. We will look at current and future methods for deploying onto AWS, how you can use serverless and AI technologies to power your next generation extensions and how we’re using AWS internally to manage online trials and improve user experience.
In The Trenches With Tomster, Upgrading Ember.js & Ember DataStacy London
A few months after I started working with Ember.js & Ember Data at my new job we began a project to upgrade both. There were parts that were a breeze and others that were quite tricky. This talk walks you through some of the challenges we faced and how we solved them as well as how we began to prepare for the Ember 2.x architectural shift. Hopefully this talk will help save you some time when you decide to upgrade your Ember web application.
Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...Martin Bergljung
In this talk you will learn how to set up an Alfresco SDK 3.0 multi module project that could be used in a larger consulting project context. Extension modules will be standalone and versioned and released independently in the Nexus 3 Repository Manager. The talk also includes a look at defining a Parent POM and an Aggregator POM for your SDK 3 project solution.
Integrating Alfresco @ Scale (via event-driven micro-services)J V
Alfresco DevCon 2018 (Lisbon) - https://devcon.alfresco.com/
Alfresco provides a rich set of options for integrating third-party systems with services across the Digital Business Platform. We will deep-dive into the architecture of the new Alfresco Integration Services framework – a set of event-driven micro-services that can be easily deployed & scaled.
https://www.youtube.com/watch?v=TyB-t7wsDEE
ADF Basics and Beyond - Alfresco Devcon 2018Mario Romano
If you want to know everything about ADF its architecture, technologies and best practices you can't skip this talk. Join us also to know more about what we released in November as part of ADF 2.0 and what is our vision for the future.
Docker and serverless Randstad Jan 2019: OpenFaaS Serverless: when functions ...Edward Wilde
This talk introduces OpenFaaS, an open source platform for serverless functions. We begin by installing, running the platform and invoking a machine learning function within 60 second (ish). Next we step up and look at the high level platform architecture and key pillars of OpenFaaS: developer first, operator friendly and community focused. We close by looking at a multiuser platform built on top OpenFaas.
The objective of this talk is to introduce you to OpenFaaS the serverless platform and OpenFaaS cloud the multi-user environment for practicing git ops with functions.
The Apereo OAE Bootcamp offers an introduction into back-end and front-end development for the Apereo OAE project.
The back-end development part focuses on learning the different extension points behind the scenes in the service layer of OAE. A back-end component for OAE that exposes a REST API is built from scratch.
Back-end development topics include:
- Node.js NPM module system
- OAE back-end application life-cycle
- Data-modelling with Apache Cassandra and writing CQL queries from Node.js
- Using the OAE APIs to expose back-end functionality for the web VIA RESTful APIs
- Writing back-end unit tests using Grunt and Mocha. If time permits, the following will also be covered:
- Integrating with OAE's ElasticSearch query and index functionality
- Integrating with OAE's Activity and Notifications functionality
- Integration with OAE's Admin Configuration functionality
The front-end development part focuses on writing a UI widget using the REST APIs developed in the back-end development part.
Front-end development topics include:
- Integrating with the OAE Widget loading system
- Writing internationalizable templates with TrimPath and the widget i18n and l10n functionality
- Interacting with the core OAE UI APIs
- Using bootstrap 3 to design responsive UI layouts for your widgets
- Writing front-end unit tests using Grunt and CasperJS
Being a WordPress developer means that our main programming language is PHP. Which works for building websites but not for running tasks. In this talk I will share my experience using Node.js as a platform to build on. Explaining why I have chosen for Node.js and show you how I used Node.js to build microservices that are supporting my WordPress projects.
Flexible UI Components for a Multi-Framework WorldKevin Ball
Slides from Flexible UI Components talk given at Web Unleashed 2017
Build UI components that work seamlessly in every JavaScript Framework.
Your core UI elements shouldn’t have to be different for your marketing site than they are in your application just because the former uses jQuery while the latter is built using Angular or React.
Lessons learned from work on ZURB Foundation 7.
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20Michael Lihs
Presentation about open source tools to set up continuous integration and continuous deployment. Covers Git, Gitlab, Chef, Vagrant, Jenkins, Gatling, Dashing, TYPO3 Surf and some other tools. Shows some best practices for testing with Behat and Functional Testing.
COB - Azure Functions for Office 365 developersChris O'Brien
A presentation I gave at ESPC 2018 (the European SharePoint, Office 365 and Azure Conference) about use of Azure Functions to extend Office 365 solutions. Covers Azure Functions fundamentals, adding code to PowerApps/Flow, Site Designs and Site Scripts (and PnP site templating), SPFx and Durable Functions. Also has tips on v1/v2, performance, pricing and how to avoid cold starts.
Fluxible is a new framework by Yahoo that follows the Flux architecture by Facebook. The framework enables you to build powerful isomorphic JavaScript applications that are extremely maintainable, extensible, and scalable. The Flux architecture employs a “unidirectional dataflow” and has three major parts: “dispatcher”, “stores”, and “views”. Yahoo’s Fluxible library contains some very powerful tools for setting up your application. This session will run through some important pieces of Fluxible and some basics for setting up an application.
Building Content-Rich Java Apps in the Cloud with the Alfresco APIJeff Potts
This presentation, originally delivered at JavaOne on October 2, 2012, talks about why you should use Alfresco instead of rolling your own content repository and discusses the new public Alfresco API for writing content apps that persist content to Alfresco in the Cloud.
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer ToolsAmazon Web Services
Today’s cutting-edge companies have software release cycles measured in days instead of months. This agility is enabled by the DevOps practice of continuous delivery, which automates building, testing, and deploying all code changes. This automation helps you catch bugs sooner and accelerates developer productivity. In this session, we’ll share the processes that Amazon’s engineers use to practice DevOps and discuss how you can bring these processes to your company by using a new set of AWS tools (AWS CodePipeline and AWS CodeDeploy). These services were inspired by Amazon's own internal developer tools and DevOps culture.
AD113 Speed Up Your Applications w/ Nginx and PageSpeededm00se
My slide deck from my session, AD113: Speed Up Your Applications with Nginx + PageSpeed, at MWLUG 2015 in Atlanta, GA at the Ritz-Carlton.
For more, see:
- https://edm00se.io/self-promotion/mwlug-ad113-success
- https://github.com/edm00se/AD113-Speed-Up-Your-Apps-with-Nginx-and-PageSpeed
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...Amazon Web Services
Organizations around the globe are leveraging the cloud to accomplish world-changing missions. This session will address how AWS can help organizations put more money toward their mission and scale outreach and operations to achieve more with less. Hear some of AWS’s most advanced customers on how their organizations handle DevOps, continuous integration and deployment. Learn how these practices allow them to rapidly develop, iterate, test and deploy highly-scalable web applications and core operational systems on AWS. The discussion will focus on best practices, lessons learned, and the specific technologies and services they use.
Serverless architectures let you build and deploy applications and services with infrastructure resources that require zero administration. In the past, you had to provision and scale servers to run your application code, install and operate distributed databases, and build and run custom software to handle API requests. Now, AWS provides a stack of scalable, fully-managed services that eliminates these operational complexities.
In this session, you will learn about the benefits of serverless architectures and the basics of the serverless stack AWS provides. We will also walk through how you can use serverless architectures for everything from data processing to mobile and web backends.
AWS DevDay San Francisco, June 21, 2016.
Presenter: Jeremy Edberg, Co-Founder, CloudNative, & AWS Community Hero
Launch Your Streaming Platforms in MinutesRoshan Dwivedi
The claim of launching a streaming platform in minutes might be a bit of an exaggeration, but there are services that can significantly streamline the process. Here's a breakdown:
Pros of Speedy Streaming Platform Launch Services:
No coding required: These services often use drag-and-drop interfaces or pre-built templates, eliminating the need for programming knowledge.
Faster setup: Compared to building from scratch, these platforms can get you up and running much quicker.
All-in-one solutions: Many services offer features like content management systems (CMS), video players, and monetization tools, reducing the need for multiple integrations.
Things to Consider:
Limited customization: These platforms may offer less flexibility in design and functionality compared to custom-built solutions.
Scalability: As your audience grows, you might need to upgrade to a more robust platform or encounter limitations with the "quick launch" option.
Features: Carefully evaluate which features are included and if they meet your specific needs (e.g., live streaming, subscription options).
Examples of Services for Launching Streaming Platforms:
Muvi [muvi com]
Uscreen [usencreen tv]
Alternatives to Consider:
Existing Streaming platforms: Platforms like YouTube or Twitch might be suitable for basic streaming needs, though monetization options might be limited.
Custom Development: While more time-consuming, custom development offers the most control and flexibility for your platform.
Overall, launching a streaming platform in minutes might not be entirely realistic, but these services can significantly speed up the process compared to building from scratch. Carefully consider your needs and budget when choosing the best option for you.
Artificia Intellicence and XPath Extension FunctionsOctavian Nadolu
The purpose of this presentation is to provide an overview of how you can use AI from XSLT, XQuery, Schematron, or XML Refactoring operations, the potential benefits of using AI, and some of the challenges we face.
Utilocate offers a comprehensive solution for locate ticket management by automating and streamlining the entire process. By integrating with Geospatial Information Systems (GIS), it provides accurate mapping and visualization of utility locations, enhancing decision-making and reducing the risk of errors. The system's advanced data analytics tools help identify trends, predict potential issues, and optimize resource allocation, making the locate ticket management process smarter and more efficient. Additionally, automated ticket management ensures consistency and reduces human error, while real-time notifications keep all relevant personnel informed and ready to respond promptly.
The system's ability to streamline workflows and automate ticket routing significantly reduces the time taken to process each ticket, making the process faster and more efficient. Mobile access allows field technicians to update ticket information on the go, ensuring that the latest information is always available and accelerating the locate process. Overall, Utilocate not only enhances the efficiency and accuracy of locate ticket management but also improves safety by minimizing the risk of utility damage through precise and timely locates.
Transform Your Communication with Cloud-Based IVR SolutionsTheSMSPoint
Discover the power of Cloud-Based IVR Solutions to streamline communication processes. Embrace scalability and cost-efficiency while enhancing customer experiences with features like automated call routing and voice recognition. Accessible from anywhere, these solutions integrate seamlessly with existing systems, providing real-time analytics for continuous improvement. Revolutionize your communication strategy today with Cloud-Based IVR Solutions. Learn more at: https://thesmspoint.com/channel/cloud-telephony
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Mind IT Systems
Healthcare providers often struggle with the complexities of chronic conditions and remote patient monitoring, as each patient requires personalized care and ongoing monitoring. Off-the-shelf solutions may not meet these diverse needs, leading to inefficiencies and gaps in care. It’s here, custom healthcare software offers a tailored solution, ensuring improved care and effectiveness.
Hand Rolled Applicative User ValidationCode KataPhilip Schwarz
Could you use a simple piece of Scala validation code (granted, a very simplistic one too!) that you can rewrite, now and again, to refresh your basic understanding of Applicative operators <*>, <*, *>?
The goal is not to write perfect code showcasing validation, but rather, to provide a small, rough-and ready exercise to reinforce your muscle-memory.
Despite its grandiose-sounding title, this deck consists of just three slides showing the Scala 3 code to be rewritten whenever the details of the operators begin to fade away.
The code is my rough and ready translation of a Haskell user-validation program found in a book called Finding Success (and Failure) in Haskell - Fall in love with applicative functors.
Atelier - Innover avec l’IA Générative et les graphes de connaissancesNeo4j
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Allez au-delà du battage médiatique autour de l’IA et découvrez des techniques pratiques pour utiliser l’IA de manière responsable à travers les données de votre organisation. Explorez comment utiliser les graphes de connaissances pour augmenter la précision, la transparence et la capacité d’explication dans les systèmes d’IA générative. Vous partirez avec une expérience pratique combinant les relations entre les données et les LLM pour apporter du contexte spécifique à votre domaine et améliorer votre raisonnement.
Amenez votre ordinateur portable et nous vous guiderons sur la mise en place de votre propre pile d’IA générative, en vous fournissant des exemples pratiques et codés pour démarrer en quelques minutes.
Takashi Kobayashi and Hironori Washizaki, "SWEBOK Guide and Future of SE Education," First International Symposium on the Future of Software Engineering (FUSE), June 3-6, 2024, Okinawa, Japan
Zoom is a comprehensive platform designed to connect individuals and teams efficiently. With its user-friendly interface and powerful features, Zoom has become a go-to solution for virtual communication and collaboration. It offers a range of tools, including virtual meetings, team chat, VoIP phone systems, online whiteboards, and AI companions, to streamline workflows and enhance productivity.
May Marketo Masterclass, London MUG May 22 2024.pdfAdele Miller
Can't make Adobe Summit in Vegas? No sweat because the EMEA Marketo Engage Champions are coming to London to share their Summit sessions, insights and more!
This is a MUG with a twist you don't want to miss.
Mobile App Development Company In Noida | Drona InfotechDrona Infotech
Looking for a reliable mobile app development company in Noida? Look no further than Drona Infotech. We specialize in creating customized apps for your business needs.
Visit Us For : https://www.dronainfotech.com/mobile-application-development/
What is Augmented Reality Image Trackingpavan998932
Augmented Reality (AR) Image Tracking is a technology that enables AR applications to recognize and track images in the real world, overlaying digital content onto them. This enhances the user's interaction with their environment by providing additional information and interactive elements directly tied to physical images.
Graspan: A Big Data System for Big Code AnalysisAftab Hussain
We built a disk-based parallel graph system, Graspan, that uses a novel edge-pair centric computation model to compute dynamic transitive closures on very large program graphs.
We implement context-sensitive pointer/alias and dataflow analyses on Graspan. An evaluation of these analyses on large codebases such as Linux shows that their Graspan implementations scale to millions of lines of code and are much simpler than their original implementations.
These analyses were used to augment the existing checkers; these augmented checkers found 132 new NULL pointer bugs and 1308 unnecessary NULL tests in Linux 4.4.0-rc5, PostgreSQL 8.3.9, and Apache httpd 2.2.18.
- Accepted in ASPLOS ‘17, Xi’an, China.
- Featured in the tutorial, Systemized Program Analyses: A Big Data Perspective on Static Analysis Scalability, ASPLOS ‘17.
- Invited for presentation at SoCal PLS ‘16.
- Invited for poster presentation at PLDI SRC ‘16.
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxrickgrimesss22
Discover the essential features to incorporate in your Winzo clone app to boost business growth, enhance user engagement, and drive revenue. Learn how to create a compelling gaming experience that stands out in the competitive market.
Quarkus Hidden and Forbidden ExtensionsMax Andersen
Quarkus has a vast extension ecosystem and is known for its subsonic and subatomic feature set. Some of these features are not as well known, and some extensions are less talked about, but that does not make them less interesting - quite the opposite.
Come join this talk to see some tips and tricks for using Quarkus and some of the lesser known features, extensions and development techniques.
Enterprise Resource Planning System includes various modules that reduce any business's workload. Additionally, it organizes the workflows, which drives towards enhancing productivity. Here are a detailed explanation of the ERP modules. Going through the points will help you understand how the software is changing the work dynamics.
To know more details here: https://blogs.nyggs.com/nyggs/enterprise-resource-planning-erp-system-modules/
1. George Wilson - December 2020
Building Modern Websites
The Cloud, APIs and CLIs
2. • Senior Consulting Engineer @
Automation Logic
• Working in DevOps on Government
Projects
• Joomla Leadership 2013-2019
• Joomla 4 Release Lead
• Please feel free to reach out on:
• Glip: George Wilson
• Email:
george.wilson@community.joomla.org
• GitHub: wilsonge
About Me
3. • Many people reference Google
trends as a measure of Joomla’s
decline
• No one mentions Wordpress in
the UK is down ~50% in Google
trends over the last 5 years
• Partly because their GLOBAL
marketshare remains constant
• Why have many companies
and agencies have fallen out
of love with the traditional PHP
CMS’?
Where did this talk come from?
5. • Ultimately any group of servers containing
applications and databases is a cloud
• Traditional PHP Shared hosting by <insert
you hosting provider here> is a cloud
• But these days the cloud o
ff
ers so many
more services than just a hosting platform
• Machine learning
• Secrets Management
• Storage
• CDN
• Container Management
• Virtual Machines
So what is the cloud?
6. Why are People Using the Cloud
• Depth of services
• Costs/Scalability - Pay for what you use and scale it as required
• Flexibility
• Reduced Downtime
• Great disaster recovery options
• Excellent Monitoring Capabilities
• Serverless
7. • These days people are tending towards
one of the 3 platforms:
1. AWS
✦ General Purpose, often small
business
2. Azure
✦ Often more corporate based as
more transparent on it’s security
model
3. GCP
✦ Highly data focussed - many
optimisations for large data sets &
analytics
The Modern Cloud
Source: https://start.jcolemorrison.com/understanding-modern-
cloud-architecture-on-aws-a-concepts-series/
8. • Amazon’s Off ering
• Dozens of services baked in -
but generally speaking a PHP
Environment might look like:
• VPC (Network)
• S3 (Storage)
• EC2 (Linux VM)
• RDS (MySQL)
• Route 53 (DNS)
AWS
10. For when that sounds like too much
Elastic Beanstalk
15 minutes later…
11. For when that sounds like too much
Elastic Beanstalk
Around $19 a month including a HA Database
12. Caveat
This just helps you to get a working setup in AWS this isn’t for
use in real life!!
13. • People no longer use static
con
fi
gurationfi les
• Lack of portability between
environments
• Desire to automate creation of
environments in ever simpler ways
• .env project
• Pulls in from environment
variables OR from
fi
les
• Used in most modern PHP
projects notably Laravel
• Would allow full use of Joomla in a
Beanstalk project
Modern Configuration Files
14. Quick Format Comparison
Joomla - Global
fi
le containing prod values. Values assembled from con
fi
g object as required
Laravel - .env
fi
le containing dev values, then assembled into con
fi
guration
fi
les
which in turn are loaded into a Con
fi
guration class
15. Things we can do
in core about this
https://github.com/joomla/joomla-cms/
compare/4.0-dev...wilsonge:feature/dotenv?
expand=1
16. Managing Installation/Updates
• So in summary:
• We have a Linux machine which gets destroyed and rebuilt every time we make a
new deployment from our ZIP
fi
le
• Questions Remaining:
• How do we disable use of Global Con
fi
g in the UI - these values are no longer
con
fi
gured through Joomla, but by our environment variables
• Same sort of switch required for loading our .env
fi
le for local development
• How do we manage the installation process (given all the normal form
fi
elds are
useless) - but we still need to setup our SQL DB?
• How do we manage Joomla upgrades - committing the physical
fi
les to git is
annoying
17. Automating Things
• My job is to automate the creation of resources
• In the words of a former team lead “You really hate GUI’s don’t you?”
• We’re going to use two tools for this
• AWS CLI (v2) - Installation Instructions: https://docs.aws.amazon.com/cli/latest/
userguide/install-cliv2.html
• I have authenticated to my personal AWS Account already
• JQ - JSON Parsing for Bash - https://stedolan.github.io/jq/download/
• We’re largely going to follow the tutorial documented here https://
docs.aws.amazon.com/elasticbeanstalk/latest/dg/environments-create-awscli.html
but being a bit more speci
fi
c to deploying my dummy Joomla instance
18. Automating Things
• aws elasticbeanstalk create-storage-location
• aws elasticbeanstalk create-application --application-name george-joomla-cli
• aws ec2 import-key-pair --key-name "george-primary-laptop-ssh" --public-key-
material
fi
leb://~/.ssh/id_rsa.pub
Ensure that a storage location has been setup
Create the main application (empty at this point) in Elastic Beanstalk
Setup my public ssh key into AWS for use later
19. Automating Things
• aws s3 cp build/tmp/packages/Joomla_4.0.0-beta6-dev-Development-
Full_Package.zip s3://elasticbeanstalk-eu-west-2-846108235618/test/
Joomla_4.0.0-beta6-dev-Development-Full_Package.zip
• aws elasticbeanstalk create-application-version --application-name george-
joomla-cli --version-label v1 --source-bundle S3Bucket=elasticbeanstalk-eu-
west-2-846108235618,S3Key=test/Joomla_4.0.0-beta6-dev-Development-
Full_Package.zip
Name of storage location from previous step
Path we want to drop
our data in - can be anything
we just need to remember it for
the next step!
Copy our zip that we want to deploy into the above storage location
Now upload our local copy of Joomla upstream
20. Automating Things
• aws elasticbeanstalk list-platform-versions --
fi
lters
'Type="PlatformName",Operator="contains",Values="PHP"' | grep
PlatformArn | awk -F '"' '{print $4}' | awk -F '/' '{print $2}'
• aws elasticbeanstalk create-confi guration-template --application-name
george-joomla-cli --template-name v1 --solution-stack-name "64bit Amazon
Linux 2 v3.1.3 running PHP 7.4"
Check what PHP Versions are available for us to use - Source: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/launch-now-url.html#launch-now-url.params
21. Automating Things
• aws elasticbeanstalk create-environment --cname-pre
fi
x george-joomla-cli --
application-name george-joomla-cli --template-name v1 --version-label v1 --
environment-name v1-initial --option-settings
fi
le://options.json
Create the environment - start with a simple
con
fi
guration!
Setup networking (not required in some cases)
Required permissions for EBS to connect to our Linux Box
Ensure our Linux Box gets a public IP address so we can access
it through the browser
Ensure our SSH key can access the Linux Box
22. Automating Things
How to
fi
nd out what the magic options are?
• Google -> AWS Documentation :)
• https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-
options-general.html
23. Settings in your Github Repo!
• Not all options have to be con
fi
gured
in this JSON
fi
le!
• Some options can be controlled in
your GitHub repo
• Environment speci
fi
c things will
need to be on the command line still
• MySQL Database: Environment
JSON File
• Joomla Site Name: con
fi
g
fi
le in
repo
Automating Things
Source: https://github.com/aws-samples/eb-php-wordpress
24. Summary
• We setup a fully automated
Joomla environment with just 7
commands (and 1 json con
fi
g
fi
le)
• This means we can spin up our
environment in a public location
again and again (and delete it on
repeat) at will
• We also have good visibility over
the environment (in a way we
wouldn’t have on a traditional
PHP host)
Automating Things
26. … and why should you try it?
• Many people have been getting back into
CLIs
• Development with git
• Containers with docker
• Companies are making automation a
priority!
• Safety is running the same command
multiple times and always getting the
same result
• Works great as a compliment to rest APIs
Why is CLI back in Fashion?
27. • Runs outside the server (e.g.
AWS Cli)
• Allows users to manage their
data in your site (Create an
event on your events site,
editing pricing of their product
in your shop etc.)
• Generally uses a Sites API to
exchange data and will require
authentication
Client Side
Client Side vs Server Side CLI
• Runs on the server (e.g. WP-CLI,
Joomla 4 Cli)
• For managing the server (e.g.
Backups, Updates etc.)
• As it sits on the server will not
require authentication as access to
the server is the authentication
• Even can be used (e.g. Laravel
Artisan) to help you do development
work
Server Side
28. CMS Relevance?
WP CLI tool (with code
contributed by Automattic)
has over 4.3k stars on
Github - that’s more stars
than Joomla’s main
repository (3.6k)!
29. • Joomla 4 has rebuilt it’s CLI layer
(based on the Symfony library)
• Already has buy-in (and
excitement) from several major
extension providers
• Allows the automation of basic
functionality for day to day
maintenance
• Of course there’s still the
standard backend for content
creators and people who
aren’t con
fi
dent with the CLI!
Joomla 4 Server-Side CLI
30. • Most site builders have a basic
setup and set of extensions they
precon
fi
gure onto the majority of
their websites
• Imagine doing this in a single
script!
Joomla 4 Server-Side CLI
32. Are APIs relevant to a CMS?
• Yes! Many people already use them:
• e.g. Backing ups to AWS (e.g. Akeeba)
• Integrations (e.g. MailChimp)
• Google Analytics
• Payment Providers
• If you’re building a website where customers can do a level of administration (e.g.
shops where people can add their products etc. there will be demand for this!)
• There’s demand for being able to programatically con
fi
gure your website in
di
ff
erent environments!
33. What are the characteristics of a modern HTTP API?
• Language - Consistent response formats (options include JSON+LD, JSON API
etc.)
• Ability to Filter/Search for data (including sort order)
• Pagination
• Authorisation and Authentication (often OAuth)
• Good documentation (even if it’s an internal API)
• Responses to the 4 main HTTP Methods - POST and GET (like on a normal
website) as well as PUT/PATCH and DELETE
• REST is generally considered the go to these days (sometimes GraphQL for
highly nested data)
34. • Built to allow interactions with
Joomla with other mediums (e.g.
mobile to Joomla, other websites
with Joomla)
• Extendable to allow adding
custom endpoints (and therefore
users to be able to authenticate
into Joomla)
• Extendable authentication
allowing you to optimise based
on what you want to use the API
for
Joomla 4 API
35. • Open API is a method for
documenting APIs in JSON or
YAML
• Originally called swagger
before being moved to a
community managed project
• https://github.com/OAI/
OpenAPI-Speci
fi
cation
Documenting a custom API with
Open API
36. Documentation
• Various auto-documentation
sources exist for OpenAPI
fi
les
• Redoc is one of my personal
favourites
• https://github.com/Redocly/
redoc
• Simple custom element and
CSS means it is super
customisable
The Art of the Possible
37. Documentation
• Swagger Docs is also well
known
• Also used for our own Joomla
Downloads Site API
• Nice tool at editor.swagger.io
that allows you to see your
JSON File and the rendered docs
page on the same screen
The Art of the Possible
39. Advanced - SDK Generation
• All azure’s integrations with other
languages (NodeJS, PHP, Java etc)
start with an Open API File
• Then each language’s SDK is
generated
• Guarantees parity between libraries
(relevant if you have lots of API
endpoints)
• This could be useful for easy 3rd party
integrations with shops or event sites
• https://github.com/Azure/autorest
The Art of the Possible
40. • Authentication and Requests
made through the API
• CLI gives users more options
and situationally can be easier
to create automated
approaches
• API Auth token stored locally on
your computer to
fi
lesystem (e.g.
~/.aws/credentials etc).
• https://clig.dev/
Client Side CLI
https://www.contentful.com/developers/docs/tutorials/cli/
extension-management/
41. Summary
• The modern web is based around the ability to deploy quick and fast updates
(as languages evolve)
• Why? In my opinion this is due to both the increased Agile nature of
projects (especially in many digital agencies) as well as the faster paced
growth of the PHP Language/The Cloud (and frameworks taking
advantages of these new features)
• This is highly driven in many medium and large sized companies by increased
use of the CLI and API
• Increased automation has built up around this - in order to reduce the impact
of human error as they work quickly
42. Summary
• Many digital agencies have moved into the cloud to take advantage of the
managed o
ff
erings by cloud providers
• Still gains the ability to control your data (unlike Wix/Squarespace) but with
many more o
ff
erings than those given by traditional PHP Hosts
• More
fl
exibility for sites that may need a more niche service as well as
better log management
• Cost di
ff
erences do exist - but in the grand scheme of anything other than
individual sites or extremely small startups are negligible
43. Summary
• We looked at the services involved in deploying Joomla into one cloud
provider (AWS)
• We looked at the small changes that would make Joomla more in tune with
the larger PHP ecosystem and would make deploying Joomla more simple
when deploying into the cloud
• And the further work that would be required to make this realistic for
hosting Joomla services
• We looked at automating the setup of a Joomla site in a 0 to hero setup with
just 7 commands (and 1 con
fi
g
fi
le)
44. Summary
• We looked at the rise of the CLI
• We di
ff
erentiated them into server side and client side o
ff
erings and what the
di
ff
erence between them was
• We saw the already existing demand for this as a service in the CMS Marketplace
in the Wordpress CLI
• We looked into what to expect from an API
• We looked at use cases, how to document them and expose them to the clients
on your site through Open API and Swagger
• Finally are these concepts relevant to many Joomla Sites?
• Absolutely not - but they are relevant to lots of sites that fall into Joomla’s target
market too!