Have you ever deployed code only to have it causes errors and unexpected results? By using static code analysis we can reduce, if not completely remove this risk. In this session, we'll discuss the basics of static code analysis, some free and inexpensive tools we can use, and how we can run the tools successfully.
Code reviews are a powerful tool in ensuring and maintaining quality in your application, but they can be very difficult to get right. When they're misunderstood or poorly executed, they can even make a bad situation worse.
In this session I'll use my professional experience to give you some tactics for getting great benefit from code reviews. We'll talk about tools, about process and most importantly about attitude! Whether you're a developer or a technical lead, come along and find out how to perform a genuinely useful code review and provide constructive feedback in the quickest time possible.
The document discusses tools to improve a LAMP web development stack. It recommends source control, development platforms, task tracking, automated testing, static analysis, automated deployment, and continuous integration. These tools enable collaboration, testing, deployment automation, and integration of code changes. Specific open source tools are recommended for each category like Git, PHPUnit, PHP Code Sniffer, and Jenkins. The document argues these tools improve workflow, quality, and speed of development.
It’s not easy to perform a good code review. Often done in a hurry just to get it done, it only makes things worse. People treat it as an obstacle, not a helpful thing. I am gonna tell you why code reviews are important and how they can help you maintain good quality code. I will not only tell who are the code reviews for, how to raise a useful code review, but also how to perform a good code review in the quickest time possible.
PHPStan is a static code analysis tool that find a new category of bugs that weren't discovered by other tools like SonarQube. In these slides we discuss:
- What is code analysis and its types.
- What do static code analysis tools focus on.
- PHPStan Levels.
- PHPStan setup and configuration.
- Adding PHPStan to GitLab CI/CD pipeline.
Even nowadays, PHP code is mostly manually audited. Expert pore over actual code, in search for bugs or code smells. Actually, it is possible to have PHP do this work itself ! Strengthened with the internal Tokenizer, bolstered by the manual, it is able to scan thousands of lines of code, without getting bored, and bringing pragmatic pieces of wisdom: official manual recommendations, version migration, code pruning and security. In the end, it deliver a global overview of the code, without reading it.
When migrating, we often need to review old code and target only interesting issues. This session will connect the backward incompatibilities and new features to actual location in the code, relying on static analysis to process a large code base quickly. Based on the accumulated experience of the tools, we will review the issues, diagnose criticality, select the best fixes, and prioritize tasks. All tools used will be open source, and you can try them at home for more validation.
This document discusses refactoring code to improve quality. It covers best practices like SOLID principles, code style standards, and algorithm complexity reductions. Integrated development environments, code review, continuous integration, logging aggregation, and profiling are presented as tools to help with refactoring. Specific tools that the author recommends and has experience with are also listed, like PhpStorm, GitHub, Jenkins, RSYSLOG, and Blackfire. Useful links and plugins are provided at the end.
The document discusses code quality control for Joomla projects using automated tools for testing, analysis, and integration. It covers unit testing with PHPUnit, static analysis with PHP Code Sniffer and PHP Mess Detector, code coverage with PHPUnit, profiling with Xdebug, documentation with PHPDocumentor, and continuous integration with Phing and CruiseControl. Automating these processes improves code quality by detecting issues early.
Migration is one of the most scary migration: it requires sharp tools to find incompatibilities in the code, and even more know-how to adapt it to the future environnement. During this workshop, we'll work on your code, systematically targeting incompatibilities and scouting for opportunities to use the new features. Along the way, we'll get right of dead code, slow routines and instable functions. After querying the code, we'll discuss the various solutions and learn even more about using PHP for the best.
Static Analysis of PHP Code – IPC Berlin 2016Rouven Weßling
The document discusses static analysis of PHP code. It defines static analysis as analyzing software without executing it to find issues. It then summarizes several PHP static analysis tools like PHPMD, Phan, PHPCS, PHPLOC, and Deptrac. It explains how these tools work by parsing code and checking for bugs, inconsistencies and violations of defined rules. In the end, it recommends using static analysis tools as part of continuous integration to improve code quality.
Even nowadays, PHP code is mostly manually audited. Expert pore over actual code, in search for bugs or code smells. Actually, it is possible to have PHP do this work itself ! Strengthened with the internal Tokenizer, bolstered by the manual, it is able to scan thousands of lines of code, without getting bored, and bringing pragmatic pieces of wisdom: official manual recommendations, version migration, code pruning and security. In the end, it deliver a global overview of the code, without reading it.
Everyone must migrate to PHP 7! Take advantage of exceptional performance improvements, cut your hardware use in half and enjoy the best of PHP. This workshop is for everyone that is still eyeing PHP 7 while still using PHP 5, and wants to review their 1 million LOC project before jumping to PHP 7. When migrating, we need to check old code and target only the interesting issues. This session will connect the backward incompatibilities and new features to their actual location in the code, relying on static analysis to quickly process a large code base. Based on our accumulated experience and tools, we'll review the issues, diagnose criticality, select the best fixes and prioritize the tasks. All tools are Open Source, and ready to be integrated into your project lifecycle.
Review unknown code with static analysisDamien Seguy
Review unknown code with static analysis
Code quality is not just for christmas, it is a daily part of the job. So, what do you do when you’re handed with a five feet long pole a million lines of code that must be vetted ? You call static analysis to the rescue. During one hour, we’ll be reviewing totally unknown code code : no name, no usage, not a clue. We’ll apply a wide range of tools, reaching for anything that helps us understand the code and form an opinion on it. Can we break this mystery and learn how everyone else is looking at our code ?
PHPcon Poland - Static Analysis of PHP Code – How the Heck did I write so man...Rouven Weßling
Static analysis tools can analyze code without executing it to find bugs and issues. The document discusses several static analysis tools for PHP like PHPMD, Phan, PHPCS, PHPLOC, Deptrac. It explains what they do, like PHPLOC gathering complexity metrics and Deptrac checking for violations of defined layer dependencies. In the end, it recommends using static analysis in CI and not trusting results blindly without understanding the underlying errors.
This document discusses continuous integration in PHP development. It explains that continuous integration helps detect problems early through immediate unit testing of all code changes. This prevents integration issues and allows developers to work incrementally with quick feedback. The document recommends writing unit tests with PHPUnit and using tools like PHP Code Sniffer to check code quality. It also discusses code coverage analysis and copy/paste detection to reduce code duplication. Finally, it provides examples of continuous integration environments like CruiseControl that can automate building and testing of PHP applications.
While many systems are still supporting PHP 5.3, we are rushing PHP 5.6 and even PHP 7. To ensure a good migration, one must go beyond checking for compilation: the code must be reviewed to avoid pitfalls like obsoletes functions, changes in default parameters or behavior, and backward incompatibilities. It must also start taking advantage of new features and drop old habits. We'll review a checklist of the common traps and help your code be PHP 7 compatible
This document discusses dynamic analysis of PHP web applications. It begins by explaining what dynamic analysis is and its benefits and limitations. It then surveys the current state of tools for PHP dynamic analysis, including code instrumentation tools, patches and extensions for PHP interpreters, and external profiling tools. A key focus is on developing a PHP extension for dynamic analysis, as it allows full control and transparency. The document outlines the capabilities of a PHP extension, such as handling function entry and exit, working with opcodes, and hooking dynamically evaluated strings. It introduces PVT, a new PHP dynamic analysis tool implemented as a PHP extension, covering its features and providing statistics on its performance. It concludes with plans for further improving PVT and references.
Review unknown code with static analysis Zend con 2017Damien Seguy
Code quality is not just for Christmas, it is a daily part of the job. So, what do you do when you're handed with a five feet long pole a million lines of code that must be vetted? You call static analysis to the rescue. During one hour, we'll be reviewing totally unknown code: no name, no usage, not a clue. We'll apply a wide range of tools, reaching for anything that helps us understand the code and form an opinion on it. Can we break this mystery and learn how everyone else is looking at our code?
PHP 7.1 introduces several backward incompatible changes and new features. Backward incompatible changes include removing extensions like ereg and functions like call_user_method(). New features include functions like intdiv() and random_bytes(). Static analysis tools can help find issues during migration by checking for syntax, linting errors, and semantically analyzing code without execution. Exceptions are also upgraded from notices/warnings to fatal errors in several cases. Developers should test their code using different PHP versions to locate and fix migration issues.
So You Just Inherited a $Legacy Application...Joe Ferguson
You were just handed the keys to a new repo. Your first glance over the code base causes the fearful "LEGACY" word to ring in your head. HAVE NO FEAR! I'll share the techniques I've learned after working on several legacy codebases to help update that old code to the current PHP generation. We'll cover triaging the old code base, writing tests to make sure you don't break anything, and how to modernize your old code base!
Review unknown code with static analysis - bredaphpDamien Seguy
Code quality is not just for christmas, it is a daily part of the job. So, what do you do when you're handed with a five feet long pole a million lines of code that must be vetted ? You call static analysis to the rescue. During one hour, we'll be reviewing totally unknown code code : no name, no usage, not a clue. We'll apply a wide range of tools, reaching for anything that helps us understand the code and form an opinion on it. Can we break this mystery and learn how everyone else is looking at our code ?
So You Just Inherited a $Legacy Application… NomadPHP July 2016Joe Ferguson
You were just handed the keys to a new repo. Your first glance over the code base causes the fearful “LEGACY” word to ring in your head. HAVE NO FEAR! I’ll share the techniques I’ve learned after working on several legacy codebases to help update that old code to the current PHP generation. We’ll cover triaging the old code base, writing tests to make sure you don’t break anything, and how to modernize your old code base!
Mention PHP CodeSniffer, and most will think it’s just for style. Add passing PHP CodeSniffer to your test suites, and hear the groans. Why are we wasting time on whitespace rules? Why does it matter that my lines are longer than X characters? The answer: PHP CodeSniffer is more than just style. In this talk we will discuss what sniffs can save you from runtime errors, sniffs that can help you upgrade your PHP install, and sniffs that can help you find the bits of code that are slowing down you and your team.
This document discusses the importance of static analysis for secure programming. It describes how static analysis tools work by analyzing code without executing it to find security vulnerabilities based on predefined rules. Good tools prioritize results by risk and provide easy-to-understand interfaces for programmers to review issues. The document recommends adopting static analysis by running tools regularly during development, focusing on high priority issues, and measuring outcomes to improve security over time. Static analysis is presented as a way to bring security expertise to all programmers and make code reviews more efficient.
"Ning's ""Your Own Social Network"" application is 160,000 lines of PHP that powers hundreds of thousands of social networks, each different than the others. This talk discusses the static and dynamic analysis techniques that we use at Ning to understand and optimize our platform, including the PHP tokenizer, regular expressions, the vld and xdebug extensions, and the PHP DTrace provider.
"
This document discusses refactoring code to improve quality. It covers best practices like SOLID principles, code style standards, and algorithm complexity reductions. Integrated development environments, code review, continuous integration, logging aggregation, and profiling are presented as tools to help with refactoring. Specific tools that the author recommends and has experience with are also listed, like PhpStorm, GitHub, Jenkins, RSYSLOG, and Blackfire. Useful links and plugins are provided at the end.
The document discusses code quality control for Joomla projects using automated tools for testing, analysis, and integration. It covers unit testing with PHPUnit, static analysis with PHP Code Sniffer and PHP Mess Detector, code coverage with PHPUnit, profiling with Xdebug, documentation with PHPDocumentor, and continuous integration with Phing and CruiseControl. Automating these processes improves code quality by detecting issues early.
Migration is one of the most scary migration: it requires sharp tools to find incompatibilities in the code, and even more know-how to adapt it to the future environnement. During this workshop, we'll work on your code, systematically targeting incompatibilities and scouting for opportunities to use the new features. Along the way, we'll get right of dead code, slow routines and instable functions. After querying the code, we'll discuss the various solutions and learn even more about using PHP for the best.
Static Analysis of PHP Code – IPC Berlin 2016Rouven Weßling
The document discusses static analysis of PHP code. It defines static analysis as analyzing software without executing it to find issues. It then summarizes several PHP static analysis tools like PHPMD, Phan, PHPCS, PHPLOC, and Deptrac. It explains how these tools work by parsing code and checking for bugs, inconsistencies and violations of defined rules. In the end, it recommends using static analysis tools as part of continuous integration to improve code quality.
Even nowadays, PHP code is mostly manually audited. Expert pore over actual code, in search for bugs or code smells. Actually, it is possible to have PHP do this work itself ! Strengthened with the internal Tokenizer, bolstered by the manual, it is able to scan thousands of lines of code, without getting bored, and bringing pragmatic pieces of wisdom: official manual recommendations, version migration, code pruning and security. In the end, it deliver a global overview of the code, without reading it.
Everyone must migrate to PHP 7! Take advantage of exceptional performance improvements, cut your hardware use in half and enjoy the best of PHP. This workshop is for everyone that is still eyeing PHP 7 while still using PHP 5, and wants to review their 1 million LOC project before jumping to PHP 7. When migrating, we need to check old code and target only the interesting issues. This session will connect the backward incompatibilities and new features to their actual location in the code, relying on static analysis to quickly process a large code base. Based on our accumulated experience and tools, we'll review the issues, diagnose criticality, select the best fixes and prioritize the tasks. All tools are Open Source, and ready to be integrated into your project lifecycle.
Review unknown code with static analysisDamien Seguy
Review unknown code with static analysis
Code quality is not just for christmas, it is a daily part of the job. So, what do you do when you’re handed with a five feet long pole a million lines of code that must be vetted ? You call static analysis to the rescue. During one hour, we’ll be reviewing totally unknown code code : no name, no usage, not a clue. We’ll apply a wide range of tools, reaching for anything that helps us understand the code and form an opinion on it. Can we break this mystery and learn how everyone else is looking at our code ?
PHPcon Poland - Static Analysis of PHP Code – How the Heck did I write so man...Rouven Weßling
Static analysis tools can analyze code without executing it to find bugs and issues. The document discusses several static analysis tools for PHP like PHPMD, Phan, PHPCS, PHPLOC, Deptrac. It explains what they do, like PHPLOC gathering complexity metrics and Deptrac checking for violations of defined layer dependencies. In the end, it recommends using static analysis in CI and not trusting results blindly without understanding the underlying errors.
This document discusses continuous integration in PHP development. It explains that continuous integration helps detect problems early through immediate unit testing of all code changes. This prevents integration issues and allows developers to work incrementally with quick feedback. The document recommends writing unit tests with PHPUnit and using tools like PHP Code Sniffer to check code quality. It also discusses code coverage analysis and copy/paste detection to reduce code duplication. Finally, it provides examples of continuous integration environments like CruiseControl that can automate building and testing of PHP applications.
While many systems are still supporting PHP 5.3, we are rushing PHP 5.6 and even PHP 7. To ensure a good migration, one must go beyond checking for compilation: the code must be reviewed to avoid pitfalls like obsoletes functions, changes in default parameters or behavior, and backward incompatibilities. It must also start taking advantage of new features and drop old habits. We'll review a checklist of the common traps and help your code be PHP 7 compatible
This document discusses dynamic analysis of PHP web applications. It begins by explaining what dynamic analysis is and its benefits and limitations. It then surveys the current state of tools for PHP dynamic analysis, including code instrumentation tools, patches and extensions for PHP interpreters, and external profiling tools. A key focus is on developing a PHP extension for dynamic analysis, as it allows full control and transparency. The document outlines the capabilities of a PHP extension, such as handling function entry and exit, working with opcodes, and hooking dynamically evaluated strings. It introduces PVT, a new PHP dynamic analysis tool implemented as a PHP extension, covering its features and providing statistics on its performance. It concludes with plans for further improving PVT and references.
Review unknown code with static analysis Zend con 2017Damien Seguy
Code quality is not just for Christmas, it is a daily part of the job. So, what do you do when you're handed with a five feet long pole a million lines of code that must be vetted? You call static analysis to the rescue. During one hour, we'll be reviewing totally unknown code: no name, no usage, not a clue. We'll apply a wide range of tools, reaching for anything that helps us understand the code and form an opinion on it. Can we break this mystery and learn how everyone else is looking at our code?
PHP 7.1 introduces several backward incompatible changes and new features. Backward incompatible changes include removing extensions like ereg and functions like call_user_method(). New features include functions like intdiv() and random_bytes(). Static analysis tools can help find issues during migration by checking for syntax, linting errors, and semantically analyzing code without execution. Exceptions are also upgraded from notices/warnings to fatal errors in several cases. Developers should test their code using different PHP versions to locate and fix migration issues.
So You Just Inherited a $Legacy Application...Joe Ferguson
You were just handed the keys to a new repo. Your first glance over the code base causes the fearful "LEGACY" word to ring in your head. HAVE NO FEAR! I'll share the techniques I've learned after working on several legacy codebases to help update that old code to the current PHP generation. We'll cover triaging the old code base, writing tests to make sure you don't break anything, and how to modernize your old code base!
Review unknown code with static analysis - bredaphpDamien Seguy
Code quality is not just for christmas, it is a daily part of the job. So, what do you do when you're handed with a five feet long pole a million lines of code that must be vetted ? You call static analysis to the rescue. During one hour, we'll be reviewing totally unknown code code : no name, no usage, not a clue. We'll apply a wide range of tools, reaching for anything that helps us understand the code and form an opinion on it. Can we break this mystery and learn how everyone else is looking at our code ?
So You Just Inherited a $Legacy Application… NomadPHP July 2016Joe Ferguson
You were just handed the keys to a new repo. Your first glance over the code base causes the fearful “LEGACY” word to ring in your head. HAVE NO FEAR! I’ll share the techniques I’ve learned after working on several legacy codebases to help update that old code to the current PHP generation. We’ll cover triaging the old code base, writing tests to make sure you don’t break anything, and how to modernize your old code base!
Mention PHP CodeSniffer, and most will think it’s just for style. Add passing PHP CodeSniffer to your test suites, and hear the groans. Why are we wasting time on whitespace rules? Why does it matter that my lines are longer than X characters? The answer: PHP CodeSniffer is more than just style. In this talk we will discuss what sniffs can save you from runtime errors, sniffs that can help you upgrade your PHP install, and sniffs that can help you find the bits of code that are slowing down you and your team.
This document discusses the importance of static analysis for secure programming. It describes how static analysis tools work by analyzing code without executing it to find security vulnerabilities based on predefined rules. Good tools prioritize results by risk and provide easy-to-understand interfaces for programmers to review issues. The document recommends adopting static analysis by running tools regularly during development, focusing on high priority issues, and measuring outcomes to improve security over time. Static analysis is presented as a way to bring security expertise to all programmers and make code reviews more efficient.
"Ning's ""Your Own Social Network"" application is 160,000 lines of PHP that powers hundreds of thousands of social networks, each different than the others. This talk discusses the static and dynamic analysis techniques that we use at Ning to understand and optimize our platform, including the PHP tokenizer, regular expressions, the vld and xdebug extensions, and the PHP DTrace provider.
"
Getting Started with Test-Driven Development at Longhorn PHP 2023Scott Keck-Warren
Test-driven development (TDD) is a software development process where test cases are written before code to validate requirements. The TDD process involves short cycles of adding a test, making the test fail, writing code to pass the test, and refactoring code. Automated tests provide confidence to refactor and change code without breaking functionality. Unit tests isolate and test individual code units while feature tests simulate how a user interacts with the application. Code coverage metrics help ensure tests cover enough of the codebase, with higher coverage percentages generally indicating better test quality.
Getting Started with Test-Driven Development at Longhorn PHP 2023Scott Keck-Warren
Test-driven development (TDD) is a software development process where test cases are written before code to validate requirements. The TDD process involves short cycles of adding a test, making it fail, making it pass, and refactoring code. Using TDD generates an automated test suite that gives developers confidence to refactor and change code quickly. Unit tests validate individual code units in isolation while feature tests validate code as a user would interact with it. Code coverage metrics help ensure tests cover enough of the codebase.
Getting Started with Test-Driven Development at PHPtek 2023Scott Keck-Warren
Scott Keck-Warren gives a presentation on getting started with test-driven development (TDD). He discusses what TDD is, the five phases of the TDD process, and why it is beneficial. He also covers how to use a testing framework like PHPUnit, what code coverage is, and some common pitfalls to avoid like neglecting to run tests or creating tests that are too large or trivial. The presentation aims to provide developers with the essential information needed to understand and implement TDD.
Getting Started with Test-Driven Development at Midwest PHP 2021Scott Keck-Warren
In this presentation, we discussed what Test-Driven Development(TDD) is, how to get started with TDD, work through an example, and discuss how to get started in your application.
Developing a Culture of Quality Code (Midwest PHP 2020)Scott Keck-Warren
This document discusses developing a culture of quality code. It defines quality code as code that is purposeful, maintainable, reliable, efficient, secure and optimized for size. It recommends that individuals focus on techniques like writing clean code, using automated testing and code reviews. It also recommends teams implement processes like requiring testing, conducting code reviews and adopting coding standards. The goal is to improve code quality and maintainability over time by altering both individual and team practices.
Unlock your organization’s full potential with the 2025 Digital Adoption Blueprint. Discover proven strategies to streamline software onboarding, boost productivity, and drive enterprise-wide digital transformation.
SAP Sapphire 2025 ERP1612 Enhancing User Experience with SAP Fiori and AIPeter Spielvogel
Explore how AI in SAP Fiori apps enhances productivity and collaboration. Learn best practices for SAPUI5, Fiori elements, and tools to build enterprise-grade apps efficiently. Discover practical tips to deploy apps quickly, leveraging AI, and bring your questions for a deep dive into innovative solutions.
Dev Dives: System-to-system integration with UiPath API WorkflowsUiPathCommunity
Join the next Dev Dives webinar on May 29 for a first contact with UiPath API Workflows, a powerful tool purpose-fit for API integration and data manipulation!
This session will guide you through the technical aspects of automating communication between applications, systems and data sources using API workflows.
📕 We'll delve into:
- How this feature delivers API integration as a first-party concept of the UiPath Platform.
- How to design, implement, and debug API workflows to integrate with your existing systems seamlessly and securely.
- How to optimize your API integrations with runtime built for speed and scalability.
This session is ideal for developers looking to solve API integration use cases with the power of the UiPath Platform.
👨🏫 Speakers:
Gunter De Souter, Sr. Director, Product Manager @UiPath
Ramsay Grove, Product Manager @UiPath
This session streamed live on May 29, 2025, 16:00 CET.
Check out all our upcoming UiPath Dev Dives sessions:
👉 https://community.uipath.com/dev-dives-automation-developer-2025/
Contributing to WordPress With & Without Code.pptxPatrick Lumumba
Contributing to WordPress: Making an Impact on the Test Team—With or Without Coding Skills
WordPress survives on collaboration, and the Test Team plays a very important role in ensuring the CMS is stable, user-friendly, and accessible to everyone.
This talk aims to deconstruct the myth that one has to be a developer to contribute to WordPress. In this session, I will share with the audience how to get involved with the WordPress Team, whether a coder or not.
We’ll explore practical ways to contribute, from testing new features, and patches, to reporting bugs. By the end of this talk, the audience will have the tools and confidence to make a meaningful impact on WordPress—no matter the skill set.
Marko.js - Unsung Hero of Scalable Web Frameworks (DevDays 2025)Eugene Fidelin
Marko.js is an open-source JavaScript framework created by eBay back in 2014. It offers super-efficient server-side rendering, making it ideal for big e-commerce sites and other multi-page apps where speed and SEO really matter. After over 10 years of development, Marko has some standout features that make it an interesting choice. In this talk, I’ll dive into these unique features and showcase some of Marko's innovative solutions. You might not use Marko.js at your company, but there’s still a lot you can learn from it to bring to your next project.
Fully Open-Source Private Clouds: Freedom, Security, and ControlShapeBlue
In this presentation, Swen Brüseke introduced proIO's strategy for 100% open-source driven private clouds. proIO leverage the proven technologies of CloudStack and LINBIT, complemented by professional maintenance contracts, to provide you with a secure, flexible, and high-performance IT infrastructure. He highlighted the advantages of private clouds compared to public cloud offerings and explain why CloudStack is in many cases a superior solution to Proxmox.
--
The CloudStack European User Group 2025 took place on May 8th in Vienna, Austria. The event once again brought together open-source cloud professionals, contributors, developers, and users for a day of deep technical insights, knowledge sharing, and community connection.
Measuring Microsoft 365 Copilot and Gen AI SuccessNikki Chapple
Session | Measuring Microsoft 365 Copilot and Gen AI Success with Viva Insights and Purview
Presenter | Nikki Chapple 2 x MVP and Principal Cloud Architect at CloudWay
Event | European Collaboration Conference 2025
Format | In person Germany
Date | 28 May 2025
📊 Measuring Copilot and Gen AI Success with Viva Insights and Purview
Presented by Nikki Chapple – Microsoft 365 MVP & Principal Cloud Architect, CloudWay
How do you measure the success—and manage the risks—of Microsoft 365 Copilot and Generative AI (Gen AI)? In this ECS 2025 session, Microsoft MVP and Principal Cloud Architect Nikki Chapple explores how to go beyond basic usage metrics to gain full-spectrum visibility into AI adoption, business impact, user sentiment, and data security.
🎯 Key Topics Covered:
Microsoft 365 Copilot usage and adoption metrics
Viva Insights Copilot Analytics and Dashboard
Microsoft Purview Data Security Posture Management (DSPM) for AI
Measuring AI readiness, impact, and sentiment
Identifying and mitigating risks from third-party Gen AI tools
Shadow IT, oversharing, and compliance risks
Microsoft 365 Admin Center reports and Copilot Readiness
Power BI-based Copilot Business Impact Report (Preview)
📊 Why AI Measurement Matters: Without meaningful measurement, organizations risk operating in the dark—unable to prove ROI, identify friction points, or detect compliance violations. Nikki presents a unified framework combining quantitative metrics, qualitative insights, and risk monitoring to help organizations:
Prove ROI on AI investments
Drive responsible adoption
Protect sensitive data
Ensure compliance and governance
🔍 Tools and Reports Highlighted:
Microsoft 365 Admin Center: Copilot Overview, Usage, Readiness, Agents, Chat, and Adoption Score
Viva Insights Copilot Dashboard: Readiness, Adoption, Impact, Sentiment
Copilot Business Impact Report: Power BI integration for business outcome mapping
Microsoft Purview DSPM for AI: Discover and govern Copilot and third-party Gen AI usage
🔐 Security and Compliance Insights: Learn how to detect unsanctioned Gen AI tools like ChatGPT, Gemini, and Claude, track oversharing, and apply eDLP and Insider Risk Management (IRM) policies. Understand how to use Microsoft Purview—even without E5 Compliance—to monitor Copilot usage and protect sensitive data.
📈 Who Should Watch: This session is ideal for IT leaders, security professionals, compliance officers, and Microsoft 365 admins looking to:
Maximize the value of Microsoft Copilot
Build a secure, measurable AI strategy
Align AI usage with business goals and compliance requirements
🔗 Read the blog https://nikkichapple.com/measuring-copilot-gen-ai/
Introducing FME Realize: A New Era of Spatial Computing and ARSafe Software
A new era for the FME Platform has arrived – and it’s taking data into the real world.
Meet FME Realize: marking a new chapter in how organizations connect digital information with the physical environment around them. With the addition of FME Realize, FME has evolved into an All-data, Any-AI Spatial Computing Platform.
FME Realize brings spatial computing, augmented reality (AR), and the full power of FME to mobile teams: making it easy to visualize, interact with, and update data right in the field. From infrastructure management to asset inspections, you can put any data into real-world context, instantly.
Join us to discover how spatial computing, powered by FME, enables digital twins, AI-driven insights, and real-time field interactions: all through an intuitive no-code experience.
In this one-hour webinar, you’ll:
-Explore what FME Realize includes and how it fits into the FME Platform
-Learn how to deliver real-time AR experiences, fast
-See how FME enables live, contextual interactions with enterprise data across systems
-See demos, including ones you can try yourself
-Get tutorials and downloadable resources to help you start right away
Whether you’re exploring spatial computing for the first time or looking to scale AR across your organization, this session will give you the tools and insights to get started with confidence.
With Claude 4, Anthropic redefines AI capabilities, effectively unleashing a ...SOFTTECHHUB
With the introduction of Claude Opus 4 and Sonnet 4, Anthropic's newest generation of AI models is not just an incremental step but a pivotal moment, fundamentally reshaping what's possible in software development, complex problem-solving, and intelligent business automation.
Supercharge Your AI Development with Local LLMsFrancesco Corti
In today's AI development landscape, developers face significant challenges when building applications that leverage powerful large language models (LLMs) through SaaS platforms like ChatGPT, Gemini, and others. While these services offer impressive capabilities, they come with substantial costs that can quickly escalate especially during the development lifecycle. Additionally, the inherent latency of web-based APIs creates frustrating bottlenecks during the critical testing and iteration phases of development, slowing down innovation and frustrating developers.
This talk will introduce the transformative approach of integrating local LLMs directly into their development environments. By bringing these models closer to where the code lives, developers can dramatically accelerate development lifecycles while maintaining complete control over model selection and configuration. This methodology effectively reduces costs to zero by eliminating dependency on pay-per-use SaaS services, while opening new possibilities for comprehensive integration testing, rapid prototyping, and specialized use cases.
European Accessibility Act & Integrated Accessibility TestingJulia Undeutsch
Emma Dawson will guide you through two important topics in this session.
Firstly, she will prepare you for the European Accessibility Act (EAA), which comes into effect on 28 June 2025, and show you how development teams can prepare for it.
In the second part of the webinar, Emma Dawson will explore with you various integrated testing methods and tools that will help you improve accessibility during the development cycle, such as Linters, Storybook, Playwright, just to name a few.
Focus: European Accessibility Act, Integrated Testing tools and methods (e.g. Linters, Storybook, Playwright)
Target audience: Everyone, Developers, Testers
GDG Cloud Southlake #43: Tommy Todd: The Quantum Apocalypse: A Looming Threat...James Anderson
The Quantum Apocalypse: A Looming Threat & The Need for Post-Quantum Encryption
We explore the imminent risks posed by quantum computing to modern encryption standards and the urgent need for post-quantum cryptography (PQC).
Bio: With 30 years in cybersecurity, including as a CISO, Tommy is a strategic leader driving security transformation, risk management, and program maturity. He has led high-performing teams, shaped industry policies, and advised organizations on complex cyber, compliance, and data protection challenges.
Protecting Your Sensitive Data with Microsoft Purview - IRMS 2025Nikki Chapple
Session | Protecting Your Sensitive Data with Microsoft Purview: Practical Information Protection and DLP Strategies
Presenter | Nikki Chapple (MVP| Principal Cloud Architect CloudWay) & Ryan John Murphy (Microsoft)
Event | IRMS Conference 2025
Format | Birmingham UK
Date | 18-20 May 2025
In this closing keynote session from the IRMS Conference 2025, Nikki Chapple and Ryan John Murphy deliver a compelling and practical guide to data protection, compliance, and information governance using Microsoft Purview. As organizations generate over 2 billion pieces of content daily in Microsoft 365, the need for robust data classification, sensitivity labeling, and Data Loss Prevention (DLP) has never been more urgent.
This session addresses the growing challenge of managing unstructured data, with 73% of sensitive content remaining undiscovered and unclassified. Using a mountaineering metaphor, the speakers introduce the “Secure by Default” blueprint—a four-phase maturity model designed to help organizations scale their data security journey with confidence, clarity, and control.
🔐 Key Topics and Microsoft 365 Security Features Covered:
Microsoft Purview Information Protection and DLP
Sensitivity labels, auto-labeling, and adaptive protection
Data discovery, classification, and content labeling
DLP for both labeled and unlabeled content
SharePoint Advanced Management for workspace governance
Microsoft 365 compliance center best practices
Real-world case study: reducing 42 sensitivity labels to 4 parent labels
Empowering users through training, change management, and adoption strategies
🧭 The Secure by Default Path – Microsoft Purview Maturity Model:
Foundational – Apply default sensitivity labels at content creation; train users to manage exceptions; implement DLP for labeled content.
Managed – Focus on crown jewel data; use client-side auto-labeling; apply DLP to unlabeled content; enable adaptive protection.
Optimized – Auto-label historical content; simulate and test policies; use advanced classifiers to identify sensitive data at scale.
Strategic – Conduct operational reviews; identify new labeling scenarios; implement workspace governance using SharePoint Advanced Management.
🎒 Top Takeaways for Information Management Professionals:
Start secure. Stay protected. Expand with purpose.
Simplify your sensitivity label taxonomy for better adoption.
Train your users—they are your first line of defense.
Don’t wait for perfection—start small and iterate fast.
Align your data protection strategy with business goals and regulatory requirements.
💡 Who Should Watch This Presentation?
This session is ideal for compliance officers, IT administrators, records managers, data protection officers (DPOs), security architects, and Microsoft 365 governance leads. Whether you're in the public sector, financial services, healthcare, or education.
🔗 Read the blog: https://nikkichapple.com/irms-conference-2025/
Master tester AI toolbox - Kari Kakkonen at Testaus ja AI 2025 ProfessioKari Kakkonen
My slides at Professio Testaus ja AI 2025 seminar in Espoo, Finland.
Deck in English, even though I talked in Finnish this time, in addition to chairing the event.
I discuss the different motivations for testing to use AI tools to help in testing, and give several examples in each categories, some open source, some commercial.
Multistream in SIP and NoSIP @ OpenSIPS Summit 2025Lorenzo Miniero
Slides for my "Multistream support in the Janus SIP and NoSIP plugins" presentation at the OpenSIPS Summit 2025 event.
They describe my efforts refactoring the Janus SIP and NoSIP plugins to allow for the gatewaying of an arbitrary number of audio/video streams per call (thus breaking the current 1-audio/1-video limitation), plus some additional considerations on what this could mean when dealing with application protocols negotiated via SIP as well.
Reducing Bugs With Static Code Analysis php tek 2025
1. Reducing Bugs With Static
Code Analysis
Scott Keck-Warren
php tek 2025
https://scott.keck-warren.com/
https://tinyurl.com/sca-php-tek-2025
4. How We Fixed Bugs (Don’t Do This)
1. Duplicate the bug
2. Fix it
3. Open SFTP connection to production
4. Manually edit the file
5. Cross our fingers nothing broke
17. use PsrHugHuggable; // PSR-8
class ScottKeckWarren implements Huggable
{
public function hug(Huggable $h)
{
// only if asked
}
}
18. use PsrHugHuggable; // PSR-8
class ScottKeckWarren implements Huggable
{
use Partner;
public function hug(Huggable $h)
{
// only if asked
}
}
19. use PsrHugHuggable; // PSR-8
class ScottKeckWarren implements Huggable
{
use Partner;
use BestDadEver;
public function hug(Huggable $h)
{
// only if asked
}
}
20. use PsrHugHuggable; // PSR-8
class ScottKeckWarren implements Huggable
{
use Partner;
use BestDadEver;
public function hug(Huggable $h)
{
// only if asked
}
}
21. use PsrHugHuggable; // PSR-8
class ScottKeckWarren implements Huggable
{
use Partner;
use BestDadEver;
use PhpDeveloper;
public function hug(Huggable $h)
{
// only if asked
}
public function getTitle(): string
{
return "Senior Software Engineer";
}
}
22. use PsrHugHuggable; // PSR-8
class ScottKeckWarren implements Huggable
{
use Partner;
use BestDadEver;
use PhpDeveloper;
use ContentCreator
public function hug(Huggable $h)
{
// only if asked
}
public function getTitle(): string
{
return "Senior Software Engineer";
}
}
34. What is Static Code Analysis?
Two Ways to Analyze Code
1. Dynamic Code Analysis
2. Static Code Analysis
35. What is Static Code Analysis?
Dynamic Code Analysis
• Run code (manually or automatically)
• Manual: slow and expensive
• Automated: slow to create but infinitely repeatable
36. What is Static Code Analysis?
Static Code Analysis
• Analyze our source code without actually executing
• Slow onboarding (maybe) on brownfield applications
• Infinitely repeatable
• Can be faster than dynamic tests
37. What is Static Code Analysis?
What specifically can we do with Static Code Analysis?
• Find errors
• Adhere to standards
• Automatically refactor our code
38. What is Static Code Analysis?
• Teams size is not a limiting factor to using SCA
• Compute/cost can be
47. Feedback Loops:Worst Case
• Change is made
• Change is pushed to production
• Problem found in the near or far future
• Problem is completely divorced from
original change
• Leads to Confusion
• What caused this?
Process
Input(s
)
Output(s
)
48. Feedback Loops:Okay Case
• Change is made on own branch
• Change is heavily tested on testing
server
• Problem found during testing
• Problem solved quickly because change
is still fresh in our mind
Process
Input(s
)
Output(s
)
49. Feedback Loops:Better Case
• Change is made on own branch
• Change is heavily tested locally
• Problem found before code leaves our
computer
• Problem solved quicker but still delayed
Process
Input(s
)
Output(s
)
50. Feedback Loops:Best Case
• Change is made on a file
• Changes are tested as we save/type
• Problem found immediately
• Problem solved immediately
Process
Input(s
)
Output(s
)
52. Where Do We Run Static Code Analysis?
Best
Okay
Better
F
a
s
t
e
r
F
e
e
d
b
a
c
k
M
o
r
e
S
a
f
e
t
y
53. Where Do We Run Static Code Analysis?
Best
Test Server
Better
F
a
s
t
e
r
F
e
e
d
b
a
c
k
M
o
r
e
S
a
f
e
t
y
55. Test Server
• Goal: Going to give us secure base
• Can’t be skipped or ignored
• All tools run
• All files
• Slow
Best
Test Server
Better
F
a
s
t
e
r
F
e
e
d
b
a
c
k
M
o
r
e
S
a
f
e
t
y
56. Test Server
• Lots of options for this
• Quickly talk about GitHub Actions
• Quick to setup
• “Infinitely” scaleable
Best
Test Server
Better
F
a
s
t
e
r
F
e
e
d
b
a
c
k
M
o
r
e
S
a
f
e
t
y
57. Test Server
• Several Ways to Configure
• One Job For All Tools
• Tools Run In Series
• Multiple Jobs/Actions For Each Tool
• Tools Run in Parallel
• Setup Dependencies Between Jobs
Best
Test Server
Better
F
a
s
t
e
r
F
e
e
d
b
a
c
k
M
o
r
e
S
a
f
e
t
y
66. Before Commit Is Created
• Build off secure base
• Balance of tools
• Changed files only
• Faster
Best
Test Server
Pre-Commit
F
a
s
t
e
r
F
e
e
d
b
a
c
k
M
o
r
e
S
a
f
e
t
y
67. Before Commit Is Created: How?
• Run files manually
• Copy and paste each file
• Skip this step SO fast
Best
Test Server
Pre-Commit
F
a
s
t
e
r
F
e
e
d
b
a
c
k
M
o
r
e
S
a
f
e
t
y
68. Before Commit Is Created: How?
• Run files automatically
• Use pre-commit functionality
Best
Test Server
Pre-Commit
F
a
s
t
e
r
F
e
e
d
b
a
c
k
M
o
r
e
S
a
f
e
t
y
75. Pre-Commit Script
• Located at “.git/hooks/pre-commit”
• NOT part of repo so not kept up to date
• Can be skipped (using “-n” or by deleting the file)
• That’s why we have a secure test server base
76. Pre-Commit Script
• Make a minimal “pre-commit” script that calls `make pre-commit`
• Keep copy in “scripts” directory
• Use composer to install the “pre-commit” script
• See https://github.com/warren5236/ScottsValueObjects
94. Where Do We Run Static Code Analysis?
Best
Test Server
Pre-Commit
F
a
s
t
e
r
F
e
e
d
b
a
c
k
M
o
r
e
S
a
f
e
t
y
95. Where Do We Run Static Code Analysis?
IDE
Test Server
Pre-Commit
F
a
s
t
e
r
F
e
e
d
b
a
c
k
M
o
r
e
S
a
f
e
t
y
96. IDE
• Build off secure base
• Smaller Number of tools
• Changed files
• Immediate feedback
IDE
Test Server
Pre-Commit
F
a
s
t
e
r
F
e
e
d
b
a
c
k
M
o
r
e
S
a
f
e
t
y
97. IDE: Top Suggestions
• Errors in your face
• Don’t ignore them
• Look for integrations/extensions
99. Where Do We Run Static Code Analysis?
IDE
Test Server
Pre-Commit
F
a
s
t
e
r
F
e
e
d
b
a
c
k
M
o
r
e
S
a
f
e
t
y
126. phpcs.xml v 1.0
if ($value) {
thing1();
}
if ($value2)
{
thing2();
}
if ($scott)
lookMomNoBraces();
if ($value) {
thing1();
}
if ($value2) {
thing2();
}
if ($scott) {
lookMomNoBraces();
}
133. RequireStrictTypes
Fatal error: Uncaught TypeError: add(): Argument #1 ($a)
must be of type int, float given, called in
/home/user/scripts/code.php on line 9 and defined in
/home/user/scripts/code.php:5
#1: Ask people for photos
Note: add QR code to slides/resources
Note: QR code/link brings you to resources about this talk and slides
Hello Developers,
#2: Story time
Want to tell you about some of the trauma I had inflicted on me
Hopefully prevent you from having the same
#3: First job as a professional developer
Small SaaS
3 developers
No source control to speak of
#4: Bugs in productions were fixed like this
Go through steps <click for each>
Last part was important because we would occasionally find <next slide>
#5: Chrome with white screen
Sometimes 1 page some times the whole site
#6: Generally results in angry person on phone
Asking “what happened?”
SSH into the server to check error logs
#36: I’m a huge fan of both
See my other talk on how to get more DCA
#37: Lots of things we’ll do with static code analysis
Read list
#38: <bp1>
Currently have a team of 1 using it (me)
Have had teams of 8 using it
<bp2>
In the past Have run into situations where our team has been waiting for their tests to run
So easy today to spin up containers no longer a problem
#39: <slide>
But Before we talk about that we need to talk about …
#44: In a feedback loop the outputs become part of the import loop
#45: Developers Are Driven By Feedback Loops Make a change, see what happens, if, fix the problem, repeat
Want these to be short -> We can affect the length
#47: In this <read slide>
I’m lucky if I remember what I did yesterday
Note lack of testing
#48: Next option okay case <read slide>
Less of a difference between change and problem being found
#50: Next best case <read slide>
I like to call this an immediate feedback cycle
Provides feedback immediately so we can resolve problems immediately
This is the ultimate goal for static code analysis
#51: I’m a belt and suspenders kind of person
Want to have multiple levels of protection from myself and others
#52: Using these feedback levels to build three tiers of static code analysis
<click for each piece>
At the bottom…<click>
#60: 3 static stages
Quick and easy first to fail fast in first stages
Slow in final stages
Saves some money and failing items in earlier phase generally cause failures in later stages
#61: Quick and easy first to fail fast in first stages
Slow in final stages
Saves some money and failing items in earlier phase generally cause failures in later stages
#74: Pre-commit adds a conditional check
Is this good yes or no -> no we can’t create the commit
#75: Still can be bypassed
Which is why we have secure base at the test server
#76: Makefile can change depending on the project branch
#77: Generally, the `make` command line tool is used to determine what portions of programs need to be recompiled so developers don't need to recompile the whole source tree for every change. `make` is generally used for any development environment where you have a "complex" local build, test, and install process.
#78: The `make` command line tool consumes Makefiles which are used to create links between target files and their inputs which the `make` command line tool then uses to determine if and what files it needs to build.
#82: 1. `git diff` -> Runs the git diff command which shows us changes in our repository
2. `--diff-filter=AM` -> filters out files to only show us modifications and additions
3. `--name-only` -> returns just the name of the file and not the contents
4. `--cached` -> returns changes that have been staged for the next commit and not every changed file
5. `app tests` -> limit our results to files in the app and tests directories
6. `| grep ".php$"` -> Limit our results to just `.php` files
#86: <slide> don’t freak out about the next slide
It’s a lot
#87: Generally think: runs right to left in series
#88: Generally think: runs right to left in series
#89: Generally think: runs right to left in series
#98: VS Code example of syntax error: Missing “use” statement
Not native but with error lens plugin
Love these which is why I need to restart VScode so frequently
#100: Here’s where it get good
Too many PHP SCA tools to review them all here
#101:
Show graphic of git repo with list of SCA tools
https://github.com/exakat/php-static-analysis-tools
#102: Bug Reduction -> things that might break code
Rule Validation -> things that don’t meet our standards
Code Analysis -> What’s code like
#103: Focus on first two here
Third one is something I do occasionally to see our code health but not automatically in 3-tiers
#104: Free
Easy to use
Everything is command line based so it runs at pre-commit and test server
#119: Teams are comprised of people with lots of life experience and traumas
That affects how they type each character
#120: Having a coding standard makes code easier to read
Without a coding standard can have chaos
How do we fix this?
Better how do we fix this automatically
#121: PHP_CodeSniffer library allows us to define standard, enforce it, and fix it
#122: PHP_CodeSniffer library has two command line scripts
PHP CodeSniffer
PHP Code Block Fixer
#123: We need tell php_codesniffer what rules to use
<slide>
I like third option
PSR12 as a base
PSR family of standards is used by a lot of frameworks so it’s helpful
#130: This is due to something that PHP does called type juggling
Because dynamic language it automatically converts types
Add function wanted int so add function received ins
Mostly great but sometimes weird bugs
#131: <click> have our two numbers
<click> We specified int parameters to our function php said I’m going to make these integers
<click> PHP converts number to integers and in this case strips out the fractions
<click> 3
#132: December 2015 PHP 7 added this declare function - Prevents this kind of bug
7 years ago
If we run our code again
<next slide>
#133: We get type error
I constantly forget to add strict_types to my code
Need a little help
PHP_Codesniffer provides that
#135: Doesn’t work by magic also need to make sure parameter types
No support out of box for this
#136: To do that we need to look for more rules (or sniffs as code sniffer calls them)
<Read slide>
#137: Next require parameter types hints
Without parameter types strict types doesn’t help us completely
Return and property types aid in us making these kinds of mistakes (also helps other tools)
#139: Let’s review where we’re at
Still have a space need to discuss and that’s
#140: Help us find fatal errors due to changes in our code or mistakes
#141: Have a very basic user class
Somewhere in my code I need the ID
#142: Have a very basic user class
Somewhere in my code I need the ID
#161: At least of some of us
Took weeks
Might still have projects running on 7.4 because can’t justify upgrade
#162: Took FOREVER
Full of potential errors because shortcuts were made
Didn’t even get to implement the new features in 8.0 like Constructor Property Promotion
Upgrade to point release have been easier
#186: My name again
Thanks to the sponsors, Eric and John put an insane amount of work into them thank them
QR code and link are resources for this talk including slides,
CTA: Liked this? Please review this on joind.in helps me be able to do this more
Also, follow the YouTube channel and me one social media. YouTube isn’t whole of my output so see what else I do