We fear modernizing legacy applications, or going API first. But it's not as futile as you might think. With modern PHP microframeworks geared toward middleware it can be a breeze.
Now the truth: It is a terribly difficult task full of pitfalls. But I will share how to do it in a step-by-step method that makes it much more approachable, and enable you to be a super hero.
You have a great REST API, but now your API users have no idea what it is capable of. They are forced to search documentation to know what they can do next with limited data provided in responses.
Let's talk about hypermedia, and what should be done in modern PHP REST APIs. We'll investigate standards, and the Richardson Maturity Model. Plus, I'll show tools to help you get there.
Regardless of claims by trendy developer websites, Enterprise PHP really is a thing: the final frontier. A reality for companies doing business at scale who turn to their developers for selecting frameworks, libraries, and tools that work at the scale they operate. These are the undocumented, and unspoken criteria driving what they trust.
Join us in this talk as Adam Culp walks through lessons learned over a five-year mission, consulting with companies who operate enterprise scale PHP applications. See what was boldly learned about squeezing more power out of PHP's engines.
This is not about how to code your API, but rather to show you what steps and best practices you need to utilize to build a successful, long-lived API. Thankfully with 5 Simple Steps you can build an API that is designed to last.
1 – Go in with a long-term mindset
2 – Understand what you’re building
3 – Utilize Spec Driven Development
4 – Incorporate Best Practices
5 – Repeat steps 1-4 for all new features
Watch this exciting panel discussion on SAP DevOps with Helen (Senior Director, Partner go-to-market) and Jayanth Bagare ( Director, SAP Academy)
and Niranjan Gattupalli ( Founder CEO, ReleaseOwl)
The Video will also showcase, ReleaseOwl ONE Native DevOps Platform for both SAP On-Prem and Cloud Applications.
Experience seamless change and release management for your SAP On-Prem Transports, ABAP Cloud (Steampunk) , CPI, and applications built on SAP Business Technology Platform with ReleaseOwl.
You have a great REST API, but now your API users have no idea what it is capable of. They are forced to search documentation to know what they can do next with limited data provided in responses.
Let's talk about hypermedia, and what should be done in modern PHP REST APIs. We'll investigate standards, and the Richardson Maturity Model. Plus, I'll show tools to help you get there.
Regardless of claims by trendy developer websites, Enterprise PHP really is a thing: the final frontier. A reality for companies doing business at scale who turn to their developers for selecting frameworks, libraries, and tools that work at the scale they operate. These are the undocumented, and unspoken criteria driving what they trust.
Join us in this talk as Adam Culp walks through lessons learned over a five-year mission, consulting with companies who operate enterprise scale PHP applications. See what was boldly learned about squeezing more power out of PHP's engines.
This is not about how to code your API, but rather to show you what steps and best practices you need to utilize to build a successful, long-lived API. Thankfully with 5 Simple Steps you can build an API that is designed to last.
1 – Go in with a long-term mindset
2 – Understand what you’re building
3 – Utilize Spec Driven Development
4 – Incorporate Best Practices
5 – Repeat steps 1-4 for all new features
Watch this exciting panel discussion on SAP DevOps with Helen (Senior Director, Partner go-to-market) and Jayanth Bagare ( Director, SAP Academy)
and Niranjan Gattupalli ( Founder CEO, ReleaseOwl)
The Video will also showcase, ReleaseOwl ONE Native DevOps Platform for both SAP On-Prem and Cloud Applications.
Experience seamless change and release management for your SAP On-Prem Transports, ABAP Cloud (Steampunk) , CPI, and applications built on SAP Business Technology Platform with ReleaseOwl.
Hopper Development IT services are described. We offer SAP Implementation, Custom Software Development, and Cloud Hosting Services. We implement SAP ERP that includes most of major modules and also SAP HANA. We plan to host SAP in the near future. Our Custom Software development includes Web, Mobile, and Enterprise Software. We cover most languages and technology platforms. Finally, we host on Cloud and provide 24x7 support for our customers.
MuleSoft approach to the integration - Warsaw MuleSoft MeetupPatryk Bandurski
Slides from the fourth Warsaw MuleSoft Meetup. Senior Integration Architect shares his personal experience regarding MuleSoft approach to the integration.
All'interno della presentazione trovate il dettaglio del settimo Mulesoft Meetup. Si è potuto approfondire strumenti come AnyPointMQ, il valore delle API stabilendo dei KPI e tracciandone l'andamento
TheEdge 2012 - AlphaCSP's 5th annual Java event, bringing news and the future of Java to the Java community, took place on the 29th of March 2012, at the Avenue Convention Center. Once again, AlphaCSP's Java experts, together with leading Java speakers from around the world, presented cutting-edge Java technologies.
This one is about Rich Ajax Platform
OpenAPI is an the emerging standard for creating, managing and consuming REST APIs. Previously named Swagger, in the last year has been adopted by the Linux Foundation and gained the support of companies like Google, Microsoft, IBM, Paypal, etc. to become a de-facto standard for APIs. In this talk we will review 3 uses cases to apply OpenAPI to enhance and speed-up our developments to create OpenAPI compliant APIs.
To try using Machine Translation at first, what type of content would you choose? Which language would you select? This is a story about the effort of NetApp globalization team trying to breaking through the challenges.
Java 10 and beyond: Keeping up with the language and planning for the futureRogue Wave Software
With the release of Java 10, the impact of Java 9, and the spread of multiple emerging technologies, the biggest questions for high-performing development teams is: How do we keep up and take advantage of the features relevant to us?
Java experts, Toomas Romer and Rod Cope, discuss recent changes to the language and how they impact tools, development velocity, and the ability to innovate; along with industry insights to better plan for more complex systems, the inevitable modernization, and adapting to scale.
Maintaining and Releasing Open Source SoftwareJoel Nothman
An introduction to software maintenance in the open source context, focusing on software and human quality controls, oriented towards . Presented in July 2019 by Joel Nothman for an internal cross-skilling session in the Sydney Informatics Hub, Core Research Facilities, The University of Sydney.
Hopper Development IT services are described. We offer SAP Implementation, Custom Software Development, and Cloud Hosting Services. We implement SAP ERP that includes most of major modules and also SAP HANA. We plan to host SAP in the near future. Our Custom Software development includes Web, Mobile, and Enterprise Software. We cover most languages and technology platforms. Finally, we host on Cloud and provide 24x7 support for our customers.
MuleSoft approach to the integration - Warsaw MuleSoft MeetupPatryk Bandurski
Slides from the fourth Warsaw MuleSoft Meetup. Senior Integration Architect shares his personal experience regarding MuleSoft approach to the integration.
All'interno della presentazione trovate il dettaglio del settimo Mulesoft Meetup. Si è potuto approfondire strumenti come AnyPointMQ, il valore delle API stabilendo dei KPI e tracciandone l'andamento
TheEdge 2012 - AlphaCSP's 5th annual Java event, bringing news and the future of Java to the Java community, took place on the 29th of March 2012, at the Avenue Convention Center. Once again, AlphaCSP's Java experts, together with leading Java speakers from around the world, presented cutting-edge Java technologies.
This one is about Rich Ajax Platform
OpenAPI is an the emerging standard for creating, managing and consuming REST APIs. Previously named Swagger, in the last year has been adopted by the Linux Foundation and gained the support of companies like Google, Microsoft, IBM, Paypal, etc. to become a de-facto standard for APIs. In this talk we will review 3 uses cases to apply OpenAPI to enhance and speed-up our developments to create OpenAPI compliant APIs.
To try using Machine Translation at first, what type of content would you choose? Which language would you select? This is a story about the effort of NetApp globalization team trying to breaking through the challenges.
Java 10 and beyond: Keeping up with the language and planning for the futureRogue Wave Software
With the release of Java 10, the impact of Java 9, and the spread of multiple emerging technologies, the biggest questions for high-performing development teams is: How do we keep up and take advantage of the features relevant to us?
Java experts, Toomas Romer and Rod Cope, discuss recent changes to the language and how they impact tools, development velocity, and the ability to innovate; along with industry insights to better plan for more complex systems, the inevitable modernization, and adapting to scale.
Maintaining and Releasing Open Source SoftwareJoel Nothman
An introduction to software maintenance in the open source context, focusing on software and human quality controls, oriented towards . Presented in July 2019 by Joel Nothman for an internal cross-skilling session in the Sydney Informatics Hub, Core Research Facilities, The University of Sydney.
An introduction to Google's PRPL pattern that can be used to implement Progressive Web Applications. Delivered at MWLUG 2017 in Alexandria, VA by Keith Strickland.
Angular (v2 and up) - Morning to understand - LinagoraLINAGORA
Slides of the talk about Angular, at the "Matinée Pour Comprendre" organized by Linagora the 22/03/17.
Discover what's new in Angular, why is it more than just a framework (platform) and how to manage your data with RxJs and Redux.
Donald Ferguson - Old Programmers Can Learn New TricksServerlessConf
Presented at ServerlessConf NYC 2016.
This presentation will discuss the experiences of a skilled, enterprise, J2EE team moving to Amazon Web Services to build a new “serverless” solution. This will include motivation for choosing and experience using specific technology (Java, Lambda, S3, RDS, API Gateway, VPC, …) The talk will qualitatively explain the productivity improvement achieved by going “serverless” relative to a more traditional application server design. We will also identify the top three helpful technologies, the three biggest hurdles and our wish list for three new capabilities.
Selecting the right automation framework is hard. It might be a critical decision in implementing your continuous testing agenda. Today, there are so many possibilities. From open source solutions (Selenium Appium, etc.), to HPE developed commercial tools (QTP, UFT, Mobile Center).
What was the process that we did in order to select the right automation framework. Our approach was to 1st define our needs from such a framework and we ended up with a list of 10 must have requirements for such a framework and then went on to pick the right tool. We ended up with different frameworks for different projects with a wide combinations of open source to our own tools (UFT, LeanFT, etc.)
This slide is translated version. Originally it was written in Korean. (http://www.slideshare.net/saltynut/how-do-we-drive-tech-changes )
It describes how do we drive technical changes onto our organizations had used old-fashioned java combinations(Java 1.6+Spring 3.x+MyBatis) and monolithic architecture.
Key point is what we need to do to drive changes, and I'll discuss what we did during Phase1 and what we are doing at Phase 2 for architecture, frontend, backend, methodologies/process.
Phase1
- Architecture : Frontend / Backend Separation
- Frontend : Angular.js, Grunt, Bower
- Backend : Java 1.7/Spring4, ORM
- Methodology/Process : Scrum, Git
Phase2
- Architecture : Micro-Service Architecture(MSA)
- Frontend : Content Router, E2E Test
- Backend : Polyglot, Multi-Framework
- Methodology/Process : Scrum+JIRA, Git Branch Policy, Pair Programming, Code Workshop
Splunk All the Things: Our First 3 Months Monitoring Web Service APIs - Splun...Dan Cundiff
A presentation titled "Splunk All the Things: Our First 3 Months Monitoring Web Service APIs" that Dan Cundiff and Eric Helgeson from Target Corporation gave at Splunk .conf2012.
We've all been faced with legacy code and often decided to rewrite, feeling it will be easier. There are many reasons this can be wrong. Adam Culp will talks about the entire journey of refactoring a legacy code base. He will begin with assessment and why, move on to planning how and when, cover execution and testing, give step-by-step examples, and even show how to manage the process effectively. Attendees will gain insight and tips on how to handle their own pile of code and refactor happy.
This is episode 2 of the building the perfect PHP app for the enterprise webinar series. You will learn: How to dig deep into application behavior and performance at runtime; How to maximize existing continuous delivery (CD) principles and tools;
When to take advantage of existing frameworks and extensions and when to do it yourself; and how to avoid reinventing the wheel each time you deploy, upgrade, or rollback.
Legacy applications are full of supervillains scheming to halt modernizing efforts. But deprecated versions of PHP, frameworks, libraries, and more drive a never-ending battle to keep applications up to date, supported, and secure. This can leave any would be superhero seeking how, what, when, and why.
Join me as we consider real-life case studies of modernizations from various large legacy applications, and will share common evil-doers, ways to foil their plans, and how to eliminate vulnerabilities in the first place. See how to make refactoring your super power!
Every change to a codebase increases technical debt leaving it less stable, bug-prone, and closer to technical bankruptcy requiring a rewrite. Let's explore how to measure technical debt to gain a score and highlight the current condition of a PHP application. We will then introduce simple steps for improving code quality, deliver new features faster, and lower project stress.
Enterprise PHP development teams, no matter the maturity level, focus on one thing, releasing stable apps that perform. They also want to avoid reinventing the wheel. Therefore, make the investment to listen to the top lessons we've learned from across industries to deliver PHP code faster without sacrificing quality, user experience, or existing workflows.
You will learn:
How to dig deep into application behavior and performance at runtime
How to maximize existing continuous delivery principles and tools
When to take advantage of existing frameworks and extensions and when to do it yourself
How to avoid reinventing the wheel each time you deploy, upgrade, or rollback
Static analysis, unit testing, compatibility, and coding standards are all important metrics to monitor and perform regularly. However, the time to set up the various tools takes time and patience to set up and run...until now.
We'll see how using pre-configured Docker images make easy to have PHP code quality tools at our fingertips, ready to run or automate on a moments notice. Then will share tips to run the various tools, and/or create automation around running them regularly.
Everybody knows how to install a PHP debugger. But many PHP developers haven't embraced step debugging, and instead do things in a manual way. For many, this is because they simply don't know how to step-debug effectively.
Let's explore how to debug common issues for problem resolution, and spend less time troubleshooting and more time coding. Attendees will see fundamentals to get up and running quickly once a debugger is installed.
Large and heavy PHP frameworks are a thing of the past. Modern PHP developers now have a wealth of libraries and packages available to perform specific tasks, and microservices are fast becoming a preferred way to architect applications. But many don't know how to start, and get thrown in the deep end to flounder. This hands-on workshop will introduce what microservices are, and how to leverage middleware to create them. We will use the Zend Expressive microframework to leverage components of Zend Framework, and other libraries, to quickly create awesome things without requiring an entire framework. Resources for reference and continued learning will also be shared.
With PHP frameworks being more decoupled than ever, and with the help of a package and dependency manager, large and heavy PHP frameworks are becoming a thing of the past. Modern PHP developers now have a wealth of libraries available that specialize at specific tasks, and microservices are fast becoming a preferred way to architect applications. But many don't know how to start.
This talk will briefly introduce what microservices are, and how to use them. Then show how to build a foundation using the Zend Expressive microframework leveraging components of Zend Framework, and other libraries, to quickly create awesome things without requiring an entire framework. Resources for reference and continued learning will also be shared.
Adam Culp will give a basic intro to Zend Framework (ZF2 and ZF3) and how to use the foundational pieces. We will get a Zend Framework application up and running quickly using the Zend Framework Skeleton Application, and Zend Skeleton Module to add modules. Adam will also introduce some useful resources to help attendees continue learning on their own. The talk will give attendees enough information to get a jump start into using the framework.
Your a visionary with a great software idea that is sure to take off, but how do you build it the right way? Adam Culp will highlight common mistakes made by startups from a technology standpoint while building software. He will discuss how to build the right team, best practices to ensure everything is solid and well built, and management methods to carry the project forward. We will also hear how to implement these things in a manner that saves the company time and money during the crucial startup phase. Attendees will gain knowledge that generally takes years, and a stack of disposed money, for companies to discover.
After days, weeks, or months of coding many developers don't know how to gauge the quality of their code. Adam Culp will introduce tools to grade, benchmark, and analyze code in an automated fashion allowing developers to write better quality software. He will explain key metrics to help understand what may need to be refactored, and use code smells to point out bugs before end-users discover them. Attendees will see how to use these tools, know where to find them, and be able to implement them in their own workflows.
When pushes to production fail the "blame game" starts between developers and devops, then everyone scurries to figure out what happened...fast! Adam Culp will show how a PHP application can be deployed flawlessly using Jenkins. Then see how "Dev" and "Ops" are supported by a system if the application breaks and the nightmare happens.
Modern developers use virtualized "single use" development environments to reduce time tweaking servers, allowing more time developing. Teams share configurations to eliminate endless "works for me" debug loops, while rebuilding and/or setup is a simple command taking minutes, not hours or days. This intro talk will create a base for attendees to build from and investigate the various technologies like Vagrant, VirtualBox, Puppet, Containers, and Virtual PHP. If your development environment is not virtualized, catch up, it's what all the "cool kids" are doing.
Deprecated: Foundations of Zend Framework 2Adam Culp
DEPRECATED-Please see http://www.slideshare.net/adamculp/foundations-of-zendframework for updated version.
For this talk Adam Culp will cover a basic intro to Zend Framework 2 (ZF2) and how to use the foundational pieces. We will discover how to get a Zend Framework 2 application up and running quickly using GitHub, Composer, and the Zend Framework 2 Skeleton Application. Then we will leverage the Zend Skeleton Module to introduce adding modules to a Zend Framework 2 application.
We will also cover basic usage of the ZF2 module manager, event manager, service manager, and database components. Adam will also introduce some useful resources to help attendees continue learning on their own. The goal of the talk is to give attendees enough information to be able to get a jump start into using ZF2.
No matter what level of development we are at in our careers we all face a daily battle to write good code for ourselves and others, deliver finished applications fast to satisfy business, and ensure everything is tested to prevent end-user fails.
In this session we will discuss what clean application development is, and how it can help us win those battles. It will provide practical and usable examples and tools to take with you, integrate into your workflow, and continue to grow into good habits.
(Topics: Version control, refactoring, coding standards, frameworks, architecture, automation, time management, and more.)
Adam Culp will talk about refactoring code. (The practice of altering code to make it cleaner, simpler, and sometimes faster, while not sacrificing functionality.) We all hate to do it, but it is a necessary evil. So lets talk about how to do it better. Adam will discuss: When to refactor. How to refactor. Why to refactor. How a refactor can help us write better code in the future. A common methodology and steps to follow while refactoring. Resources to help us all on our refactor journey.
You have been wanting to use the "new shiny", but there are too many "Git how-tos" out there and you don't kow where to start. This is not another one of those. Instead Adam Culp will give a practical walk through the development cycle and how to use Git as the source control. From initialization of a repository, to forking, cloning, and checkout, we will walk through a sample project and how most developers actually use Git to manage the workflow. Adam will also touch on how to use Git repository hosting providers, and how to use them with PAAS (Platform as a service) providers.
Adam Culp will talk about using Vagrant to create and manage virtualized development environments, making it easier to mirror production servers. Then will cover using Puppet for more advanced provisioning, making the addition of multiple development environments and servers easier and faster.
If you’re developing and are not sure what these technologies are, this talk is for you. As a developer it’s increasingly important to ensure our development, testing, staging, and production environments are as closely matched to each other as possible, alleviating the “can’t reproduce it on my machine” excuses. Whether you use 2, 3, or 4 of these environments is of less importance if they are all built on the same “stack” of applications.
No matter what level of development we are at in our careers we all face a daily battle to write good code for ourselves and others, deliver finished applications fast to satisfy business, and ensure everything is tested to prevent end-user fails. In this talk we will discuss what “clean application development” is, and how it can help us win those battles. The talk will provide practical and usable examples to take with you, integrate into your workflow, and continue to grow into good habits.
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfPeter Spielvogel
Building better applications for business users with SAP Fiori.
• What is SAP Fiori and why it matters to you
• How a better user experience drives measurable business benefits
• How to get started with SAP Fiori today
• How SAP Fiori elements accelerates application development
• How SAP Build Code includes SAP Fiori tools and other generative artificial intelligence capabilities
• How SAP Fiori paves the way for using AI in SAP apps
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
UiPath Test Automation using UiPath Test Suite series, part 5DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 5. In this session, we will cover CI/CD with devops.
Topics covered:
CI/CD with in UiPath
End-to-end overview of CI/CD pipeline with Azure devops
Speaker:
Lyndsey Byblow, Test Suite Sales Engineer @ UiPath, Inc.
Threats to mobile devices are more prevalent and increasing in scope and complexity. Users of mobile devices desire to take full advantage of the features
available on those devices, but many of the features provide convenience and capability but sacrifice security. This best practices guide outlines steps the users can take to better protect personal devices and information.
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
Communications Mining Series - Zero to Hero - Session 1DianaGray10
This session provides introduction to UiPath Communication Mining, importance and platform overview. You will acquire a good understand of the phases in Communication Mining as we go over the platform with you. Topics covered:
• Communication Mining Overview
• Why is it important?
• How can it help today’s business and the benefits
• Phases in Communication Mining
• Demo on Platform overview
• Q/A
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...Neo4j
Leonard Jayamohan, Partner & Generative AI Lead, Deloitte
This keynote will reveal how Deloitte leverages Neo4j’s graph power for groundbreaking digital twin solutions, achieving a staggering 100x performance boost. Discover the essential role knowledge graphs play in successful generative AI implementations. Plus, get an exclusive look at an innovative Neo4j + Generative AI solution Deloitte is developing in-house.
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
Essentials of Automations: The Art of Triggers and Actions in FME
Putting legacy to REST with middleware
1. Putting Legacy to REST
with Middleware
By:
Adam Culp
Twitter: @adamculp
2. 2
Putting Legacy to REST with Middleware
●
About me
– DevRel and Tech Lead at Nexmo
– OSS Contributor
– PHP-Fig voting member (IBM i Toolkit)
– Organizer SoFloPHP (South Florida)
– Organizer SunshinePHP (Miami)
– Long distance (ultra) runner
– Judo Black Belt Instructor
3. 3
Putting Legacy to REST with Middleware
●
About me
– DevRel and Tech Lead at Nexmo
– OSS Contributor
– PHP-Fig voting member (IBM i Toolkit)
– Organizer SoFloPHP (South Florida)
– Organizer SunshinePHP (Miami)
– Long distance (ultra) runner
– Judo Black Belt Instructor
I am the
PHP Ninja!!!
4. 4
Putting Legacy to REST with Middleware
●
Fan of iteration
– Pretty much everything requires iteration to do well:
●
Long distance running
●
Judo
●
Development
●
Evading project managers
●
Refactoring!
7. 7
Refactoring Legacy Code
●
What is “Legacy Code”?
– Is there a coding standard for your project?
– Is code using OOP?
– Is Composer used in your project?
8. 8
Refactoring Legacy Code
●
What is “Legacy Code”?
– Is there a coding standard for your project?
– Is code using OOP?
– Is Composer used in your project?
– Is the project using a framework?
9. 9
Refactoring Legacy Code
●
What is “Legacy Code”?
– Is there a coding standard for your project?
– Is code using OOP?
– Is Composer used in your project?
– Is the project using a framework?
– Are you unit testing?
10. 10
Refactoring Legacy Code
●
What is “Legacy Code”?
– Is there a coding standard for your project?
– Is code using OOP?
– Is Composer used in your project?
– Is the project using a framework?
– Are you unit testing?
– Does your project avoid NIH?
11. 11
Refactoring Legacy Code
●
What is “Legacy Code”?
– Is there a coding standard for your project?
– Is code using OOP?
– Is Composer used in your project?
– Is the project using a framework?
– Are you unit testing?
– Does your project avoid NIH?
If you can answer “No” to any of these,
you may be creating “Legacy Code”!!!
12. 12
Refactoring Legacy Code
●
What is “legacy” really?
– According to https://en.wikipedia.org/wiki/Legacy_code
●
“...no longer supported or manufactured...”
●
“...code inserted into modern software for the purpose of maintaining
an older or previously supported feature...”
●
“...supporting older file formats...”
●
“...code may no longer work without changes...”
●
“...code that no longer runs on a later version of a system, or requires
a compatibility layer to do so...”
13. 13
Putting Legacy to REST with Middleware
●
Why Rewrite?
– Change technology (PHP to Javascript, Python, etc.)
– Code is REALLY bad
– If less expensive to rewrite versus refactor
– Little to no chance to lose business logic
– Desire a “different” application
14. 14
Putting Legacy to REST with Middleware
●
API First!
– API is first class citizen
15. 15
Putting Legacy to REST with Middleware
●
API First!
– API is first class citizen
– API comes first, then implementation
16. 16
Putting Legacy to REST with Middleware
●
API First!
– API is first class citizen
– API comes first, then implementation
– Development teams can work in parallel
17. 17
Putting Legacy to REST with Middleware
●
API First!
– API is first class citizen
– API comes first, then implementation
– Development teams can work in parallel
– Reduces cost of developing apps
●
Through re-use of business logic
18. 18
Putting Legacy to REST with Middleware
●
API First!
– API is first class citizen
– API comes first, then implementation
– Development teams can work in parallel
– Reduces cost of developing apps
●
Through re-use of business logic
– Faster time to market
19. 19
Putting Legacy to REST with Middleware
●
API First!
– API is first class citizen
– API comes first, then implementation
– Development teams can work in parallel
– Reduces cost of developing apps
●
Through re-use of business logic
– Faster time to market
– OpenAPI
20. 20
Putting Legacy to REST with Middleware
●
API First!
– API is first class citizen
– API comes first, then implementation
– Development teams can work in parallel
– Reduces cost of developing apps
●
Through re-use of business logic
– Faster time to market
– OpenAPI
– Reduces risk of failure
22. 22
Putting Legacy to REST with Middleware
●
Modernization Methods
– #1 Total Rewrite
●
Create entirely new app
●
Build until complete
●
Big BANG!
23. 23
Putting Legacy to REST with Middleware
●
Modernization Methods
– #1 Total Rewrite
●
Create entirely new app
●
Build until complete
●
Big BANG!
24. 24
Putting Legacy to REST with Middleware
●
Modernization Methods
– #1 Total Rewrite
●
Create entirely new app
●
Build until complete
●
Big BANG!
●
Pitfalls
– Constant “scope creep”
– Maintain 2 apps
– Expensive!
25. 25
Putting Legacy to REST with Middleware
●
Modernization Methods
– #1 Total Rewrite
●
Create entirely new app
●
Build until complete
●
Big BANG!
●
Pitfalls
– Constant “scope creep”
– Maintain 2 apps
– Expensive!
●
Benefits
– Clean slate
– Energy/Excitement
– Less business disruption
26. 26
Putting Legacy to REST with Middleware
●
Modernization Methods (cont’d)
– #2 REST API Backend
●
Build an API
●
Use the API to drive logic and data
27. 27
Putting Legacy to REST with Middleware
●
Modernization Methods (cont’d)
– #2 REST API Backend
●
Build an API
●
Use the API to drive logic and data
●
Pitfalls
– Requires cleanup of objects first
– Longer time to get productive
– Very difficult for spaghetti apps
28. 28
Putting Legacy to REST with Middleware
●
Modernization Methods (cont’d)
– #2 REST API Backend
●
Build an API
●
Use the API to drive logic and data
●
Pitfalls
– Requires cleanup of objects first
– Longer time to get productive
– Very difficult for spaghetti apps
●
Benefits
– Cleans up data/business logic
– Shorter time to completion
29. 29
Putting Legacy to REST with Middleware
●
Modernization Methods #2 (How-To)
– Create standalone REST API
●
Add one module at a time
30. 30
Putting Legacy to REST with Middleware
●
Modernization Methods #2 (How-To)
– Create standalone REST API
●
Add one module at a time
– Refactor the Legacy application to use API as Service/Model
31. 31
Putting Legacy to REST with Middleware
●
Modernization Methods #2 (How-To)
– Create standalone REST API
●
Add one module at a time
– Refactor the Legacy application to use API as Service/Model
– Eventually API First, w/ frontend application
32. 32
Putting Legacy to REST with Middleware
●
Modernization Methods (cont’d)
– #3 Legacy Middleware
●
New application (as with rewrite)
●
In stages
33. 33
Putting Legacy to REST with Middleware
●
Modernization Methods (cont’d)
– #3 Legacy Middleware
●
New application (as with rewrite)
●
In stages
●
Pitfalls
– Takes upfront planning
– Takes longer
– Overall, still creating 2 new apps
– Not API first until the end
34. 34
Putting Legacy to REST with Middleware
●
Modernization Methods (cont’d)
– #3 Legacy Middleware
●
New application (as with rewrite)
●
In stages
●
Pitfalls
– Takes more planning
– Takes longer
– Overall, still creating 2 new apps
– Not API first until the end
●
Benefits
– Can update/implement new frontend faster (duplicated)
– Spaghetti app easier to manage
– Less business impact
– Marketing “new” features regularly
35. 35
Putting Legacy to REST with Middleware
●
Modernization Methods #3 (How-To)
– New sub-directory for new app
36. 36
Putting Legacy to REST with Middleware
●
Modernization Methods #3 (How-To)
– New sub-directory for new app
– Create LegacyMiddleware, add it before FinalMiddleware
37. 37
Putting Legacy to REST with Middleware
●
Modernization Methods #3 (How-To)
– New sub-directory for new app
– Create LegacyMiddleware, add it before FinalMiddleware
– Fix issues with routing and includes
38. 38
Putting Legacy to REST with Middleware
●
Modernization Methods #3 (How-To)
– New sub-directory for new app
– Create LegacyMiddleware, add it before FinalMiddleware
– Fix issues with routing and includes
– Update doc_root to be new location
●
Site working as it used to
39. 39
Putting Legacy to REST with Middleware
●
Modernization Methods #3 (How-To)
– New sub-directory for new app
– Create LegacyMiddleware, add it before FinalMiddleware
– Fix issues with routing and includes
– Update doc_root to be new location
●
Site working as it used to
– Start creating new modules in new app
40. 40
Putting Legacy to REST with Middleware
●
Modernization Methods #3 (How-To)
– New sub-directory for new app
– Create LegacyMiddleware, add it before FinalMiddleware
– Fix issues with routing and includes
– Update doc_root to be new location
●
Site working as it used to
– Start creating new modules in new app
– LegacyMiddleware called less and less
41. 41
Putting Legacy to REST with Middleware
●
Modernization Methods #3 (How-To)
– New sub-directory for new app
– Create LegacyMiddleware, add it before FinalMiddleware
– Fix issues with routing and includes
– Update doc_root to be new location
●
Site working as it used to
– Start creating new modules in new app
– LegacyMiddleware called less and less
– Remove legacy app once all endpoints satisfied
42. 42
Putting Legacy to REST with Middleware
●
What is “Middleware”?
– NEW? way to build multi-layers as tiered approach to execution
– “Software glue” - wikipedia
●
Implement communication and input/output
●
Popular in ‘80s to link newer applications to legacy systems
43. 43
Putting Legacy to REST with Middleware
●
Frameworks!
– Expressive (Laminas Project, formerly Zend Framework)
– Slim PHP
– Most others:
●
Laravel
●
Symfony
●
Etc.
44. 44
Putting Legacy to REST with Middleware
●
Testing
– Always test prior to refactoring
– Then refactor
– Then test again
– Refactor tests as needed
– Repeat
45. 45
Putting Legacy to REST with Middleware
●
Tools
– Source Control
●
Allows easier rollback
●
Allows collaboration
●
Git makes branching easier
46. 46
Putting Legacy to REST with Middleware
●
Tools (cont’d)
– CI/CD
●
Makes updates across team seamless
47. 47
Putting Legacy to REST with Middleware
●
Conclusion
– Middleware makes modernization easier
– Do it in stages
– Test all the things...often
– Teamwork
– Love iteration!