Cascadia PHP is a 3-day PHP community conference in the heart of Portland Oregon.

Thursday 24th October 2024

09:00
0
Practical Object-Oriented Design Principles
Workshop by Sarah Savage in Willamette (2 hours, 50 minutes)

Figuring out the best way to apply object-oriented design principles to your code is a challenge for even the most experienced developers. In this tutorial we’ll dive deeply into exactly how to apply object-oriented design principles to the software we’re writing, including an in-depth analysis of the SOLID patterns and practices.

0
The Truth About Event Sourcing
Talk by John Congdon in Multnomah Falls (50 minutes)

Event Sourcing is a fascinating topic, and while I work on a legacy project, I try to weave it in when I can. Learn why Event Sourcing is often referred to as the "Source of Truth". The goal is to talk about Event Sourcing in general, and then introduce a couple of libraries in example code to get you started. We'll look at Event Sauce, the library I use in the main application I work on, and the newer Verbs, which is a Laravel package.

0
Downgrade to Upgrade and Other Composer Tricks
Talk by Andy Snell in Crater Lake (50 minutes)

Thanks to the ubiquity of Composer, a PHP application may depend on dozens of third-party packages, each of which will define their own dependencies. When an application is deployed and working as expected, it can be difficult to prioritize the development time for package updates with breaking changes, and you might find some dependencies have slipped a few major versions behind their current release. Nevertheless, even if all root dependencies are up to date, some packages inevitably become abandoned, drop version constraints, or add an incompatible dependency. The end result: upgrading to the latest PHP version (or other package) is blocked by a tangled web of interdependent version conflicts and incompatible vendor code. Luckily for us, Composer is more than just install, require, and update, and we can use some of the lesser known functionality and behavior to untangle the web of conflicts and create forward-friendly migration path. We'll cover: Using the depends, and prohibits commands to understand package relationships Using forked repositories and branch aliases to provide a compatible version of a package Preventing unnecessary transitive dependencies from being installed and causing conflicts Upgrading to the latest version of a package, by using Rector to downgrading it to your PHP version

10:00
0
Time, Why You Punish Me?
Talk by Scott Keck-Warren in Multnomah Falls (50 minutes)

They say time is a cruel mistress and any developer that has worked with dates and times will most likely agree. In this session, we'll discuss important concerns and gotchas when working with time as well as how to best handle time in PHP-based web applications.

0
PHP, Meet AI
Talk by Eric Mann in Crater Lake (50 minutes)

With new advances in machine learning, advanced integrations with AI platforms are now available to everyone! You can easily build AI into your application without a Ph.D. or advanced knowledge of linear algebra or the algorithms that make machine learning work. In this talk, we’ll cover some simple integrations with commonly available tools to make your application truly “smart.” No prior experience in machine learning is required, just come prepared to learn, ask questions, and get your hands dirty with state of the art tools.

11:00
0
Yak Free Docker: Everyday Uses That Aren't Deployment
Talk by Tim Lytle in Multnomah Falls (50 minutes)

Though it's the common use case, deploying your application using docker - or even just using docker to power your local development stack - may seem a bit daunting at first. And it may require some changes you're not yet ready, or able, to make. But if you want to get started with docker, there are plenty of uses that aren't deployment. In this 99% Yak-Shaving™ Free session, we'll focus on the ones that require little (or no) setup, and build a solid understanding of docker itself. These day-to-day use cases will make you docker confident, and ready to tackle things like deployment with docker in the future. Bring your laptop, and you'll be using some of them before I stop talking. And if you find the docker vrs virtual machine distinction a little fuzzy, don't worry - this talk will start by clearing that right up, and do it with sock puppets.

0
Internationalization and Localization With PHP
Talk by Ben Ramsey in Crater Lake (50 minutes)

What’s today’s date? Is it 07/20/2023 or 20/07/2023? Or maybe it’s 2023/07/20? How many elePHPants do you want to buy? Is it 1,500 or 1.500? Will that be $30,000.00 or 30.000,00 $? We represent dates, times, numbers, and currency in a variety of ways, depending on where we are in the world, and writing software to accommodate these different formats can be scary. It’s worse when you find out you need to put these formatted values inside a translated string like, “Sign up before July 20th, and you’ll get 20% off the regular price of $30,000.” String concatenation and standard placeholders won’t work because different languages and regions follow different rules. Fortunately, we have tools to make our jobs easier, and in this talk, we’ll take a look at FormatPHP and FormatJS, libraries designed to help with internationalization and localization of web applications. We’ll see how these libraries aid in formatting dates, times, numbers, and currency, as well as messages with plural conditions. We’ll learn how to format messages for translation, and by the end of this talk, you’ll know what a translation management system (TMS) is and how to extract strings from your application to send to your translators.

13:00
0
A call to rebuild the community
Keynote by Matt Trask (50 minutes)

That silly thing called Covid walloped our community and now it's time to rebuild! This talk will take an introspective look at what the state of the community was prior to the pandemic, how we got through the pandemic community-wise and how we can reshape and rebuild the community today. This talk is hopefully inspiring to at least one person in the audience to revive a user group, start a new one, or find one to join. Audience members will leave knowing who lead the community in the before times, and some of the people we look to these days to help us guide the wonderful PHP community.

14:00
0
PHP Coding Competition
Workshop by Mark Niebergall in Willamette (2 hours, 50 minutes)

Think you have some amazing PHP skills? This will be a fun PHP code competition, pitting developers against each other to solve specific problems. There will be 5 mini challenges to pick and choose from, with some challenges being first-to-complete and others best-at-the-end. Bring a laptop, your favorite IDE, and your Github account to make PRs to complete the challenges. Small nerd prizes, plus bragging rights, for each challenge champion!

0
Attackers want your data and they're getting it from your API
Talk by Tim Bond in Multnomah Falls (50 minutes)

APIs are everywhere. Some companies sell theirs for profit and publish documentation alongside it. Others expose just enough APIs to provide value to the end users, without ever intending them to be used for any other purpose. Your API is the purveyor to some valuable data, and attackers are eager to get at it. This session will cover some of the methods attackers use to reverse engineer your API and some steps you can take to thwart them. The session will begin by demonstrating a few methodologies on how traffic to an API can be 'sniffed' and analyzed. We will then discuss authentication with API keys and OAuth2 and the differences and pitfalls of each. We'll touch on some low hanging fruit on hardening your API: TLS encryption, certificate pinning, and some less obvious techniques including HMAC request signing, obfuscation, compilation protection, and more. At the end of the session you'll have a better understanding of the cat and mouse game that is API security, the knowhow of the tools and techniques attackers might be using to get at your data, and some steps you can implement to better your API's security.'

0
SQL Database Design For Developers
Talk by Scott Keck-Warren in Crater Lake (50 minutes)

As shocking as this may be, not every team has a dedicated database administrator. Like many developers, I have had to learn difficult lessons about database design the hard way when under a lot of pressure to get something that’s broken fixed. In this session, we will go over how to normalize our database, how to use indexes to improve our performance and discuss using constraints to make sure that the data entered into our database follows our business rules.

15:00
0
Let's do the monster mash! A Frankenphp primer
Talk by Kurtis S Holsapple in Multnomah Falls (50 minutes)

Coming Soon

0
A Hater's Guide To Programming With LLM's
Talk by Chris Hartjes in Crater Lake (50 minutes)

When you are skeptical of any technology it's always good to do enemy research so your comments on social media have some truth to them. What is currently being referred to as "Artificial Intelligence" is both a triumph of marketing and changing the software development industry and anyone who is grumpy is going to have to deal with it one way or the other. In this talk Chris Hartjes will give his take on Large Language Models and how skeptics like himself interact with them as someone actually getting paid to write code. Nobody wants to end up being a "prompt engineer" so understanding how to use these tools to your advantage might be how you find new opportunities and survive waves of layoffs.

16:00
0
Arrays, Iterators, and IteratorAggregates, oh my!
Talk by Levi Morrison in Multnomah Falls (50 minutes)

This talk goes over using the iterable types in PHP, but mostly Iterators and IteratorAggregates. It covers desirable properties of iterators if you are authoring them, and good hygiene to follow.

0
Alexa, Ask Me About PHP!
Talk by Omni Adams in Crater Lake (50 minutes)

The future we saw in Star Trek is happening now! Instead of having to actually touch your technology, you can now use your voice to bend it to your will. In this talk, we'll go from an idea for an Alexa skill to a fully functioning voice-based assistant for a hobby that involves a surprising amount of calculations: brewing beer. No braincells will be harmed during this talk (meaning no alcohol), but you may accidentally learn how it's brewed as we build a skill to aid in it.

Friday 25th October 2024

09:00
0
Evolution of PHP Security
Workshop by Eric Mann in Willamette (2 hours, 50 minutes)

Regardless of reports to the contrary, PHP is a modern, scalable, secure programming language suitable for any number of applications. As with any other language or tool, PHP can only be used securely if the developers using it wield their tools safely. This training class will walk through best practices in: Password management (including hashing) Credentials management (API keys) Data encryption (both local and remote) Data integrity (i.e., signing and authentication) Server hardening Attendees will leave with a better understanding of PHP and how to use it in secure applications. Attendees should have an operable PHP environment before arriving. They will be given a code repo to use during the training class which will demonstrate the principles being discussed and allows them to practice from-scratch implementations in code.

0
HTMX and Hypermedia: Back to the Future
Talk by Ryan Durham in Multnomah Falls (50 minutes)

Are you feeling JavaScript fatigue? Have you woken up from a daze after installing yet another build tool and wondered if all the complication is really necessary? There has been a lot of hype about HTMX recently, even though the techniques it champions have been around for quite some time. Let's talk about hypermedia and how it might cure you of your JavaScript woes.

0
Writing a PHP extension in Rust, or What is a PHP extension?
Talk by Levi Morrison in Crater Lake (50 minutes)

PHP extensions are native code. Let's write one in Rust without the official tooling to learn about what makes PHP extensions what they are! We'll go over the internal structures and functions needed to make a functional PHP extension, and some of the differences between thread-safe and non-thread-safe builds, as well as debug and non-debug.

10:00
0
Bug Squashing with TDD
Talk by Mark Niebergall in Multnomah Falls (50 minutes)

TDD is perceived as a best practice, but has struggled with adoption. Get past that hurdle by using a practical starting point for TDD by using it to fix bugs. Practical tips will be shared, and how to get started with TDD will be explained. An actionable takeaway TDD pattern will be shown to help speed up bug fixing and ensure bugs are actually squashed and fixed.

0
What’s new in PHP 9.0: See the future and discover the past in PHP RFCs
Talk by Eric Poe in Crater Lake (50 minutes)

Reading the comments is always a bad idea in social media; however, for a socially developed language like PHP, reading the comments will give you insight into the background of existing and upcoming features. Since version 5.3, PHP itself has had a social side to its curation and development. Features and deprecations are proposed, discussed, and voted on in the formal RFC ('Request For Comments') process before they can be implemented in the core language. Let’s look at some features, including up-and-coming features, through the lens of the RFC and see how we can use that new knowledge to improve the development experience of our daily dev work.

11:00
0
Reboot Your Resume
Talk by Marie Gettel-Gilmartin in Multnomah Falls (50 minutes)

Whether you're a front-end engineer, back-end developer, or project manager, this session will help you craft a resume that showcases your expertise in a competitive industry. “Reboot Your Resume” by highlighting your technical skills, projects, and achievements in a way that stands out to recruiters and staffing managers. Learn the best practices for structuring a tech resume, tailoring it for specific roles, and using the right keywords to beat applicant tracking systems (ATS). Make your resume stand out in the crowded tech landscape. Key takeaways: • Best practices for a clean, ATS-friendly resume layout • How to highlight your technical skills and experience • Strategies for showcasing projects, open-source contributions, and certifications • Tailoring your resume for specific tech roles and companies • Tips for making your resume stand out in the crowded tech landscape This workshop is perfect for tech professionals looking to refresh their resumes. Reboot your career into a new job or internal opportunity.

0
Intersectiona11y: Making tech work for everyone
Talk by Kaitlyn Concilio in Crater Lake (50 minutes)

Aspects of development work like accessibility are often treated by product teams as legal obligations, boxes to be checked off the list. As we widen the scope to the broader organization, we can see this mindset being applied to other areas, like Diversity, Equity and Inclusion, or dealing with remote workers, or incorporating emerging technologies like AI. At best, each area is seen as one person’s job to take care of, with a limited scope of impact, and everyone else can wash their hands of it. But making things better, easier and more equitable is the reason most people get started developing software - why wouldn’t we extend these goals and their benefits as broadly as possible? We’ll talk about concepts of universal design you can apply across workstreams. By applying these, you’ll see increased internal engagement and morale. Externally, you’ll grow your potential audience, which can have a meaningful positive impact on your bottom line - everyone wins!

13:00
0
Scaling Diversity - to a global level
Keynote by Andreas Heigl (50 minutes)

Diversity has become a kind of mainstream topic. Every event advertise diversity in one way or another. Every company – especially in the tech sector – has their own ideas on how diverse they are. But what does Diversity mean? Is the percentage of female employees enough? And what does Diversity mean on a global level? Things that are perfectly normal in one country are far beyond reach in another one. For me, visiting countries considered to be amongst the poorest in the world was mind-boggling. Meeting local developers has opened my eyes to how privileged I am and how little I'd realized that before. Let me take you on a journey to interesting countries, wonderful people and a lot of things we all can do to scale diversity to a global level. To not only help the people in "underdeveloped" countries but also to help our own technical communities to grow and to include much more diverse ideas.

14:00
0
Hands-On AI Integration: Boost Your Development Productivity
Workshop by Joshua Ray Copeland in Willamette (2 hours, 50 minutes)

Discover how cutting-edge AI tools like GPT Engineer, ChatGPT, GitHub Copilot, and Ollama can revolutionize your coding process in this comprehensive three-hour tutorial. We will delve deep into how these tools can assist in writing code, debugging, generating documentation, learning new skills, and significantly reducing the time spent on routine tasks. This hands-on session is designed to provide you with practical knowledge and skills to integrate AI into your development workflow effectively. We'll start with an in-depth look at setting up Ollama to run your own models locally. You'll learn how to install and configure Ollama, optimize its performance, and leverage its capabilities to tailor AI solutions to your specific development needs. This segment will ensure you have a robust foundation for running AI models efficiently on your local machines. Next, we'll explore the integration of GPT Engineer, ChatGPT, and GitHub Copilot into your development environment. Through practical examples and step-by-step guidance, you'll see how these tools can accelerate your project timelines and enhance code quality. We'll cover best practices, common pitfalls, and tips to make the most of these AI-powered assistants in your daily workflow. Finally, we'll address real-world scenarios and case studies to illustrate the transformative impact of AI on software development. Whether you're a seasoned developer or just starting, this tutorial will equip you with the knowledge and skills to harness AI's potential, maximizing your development productivity and efficiency. Join us for an immersive learning experience that will change the way you code.

0
The ABCs and 123s of HTTP APIs
Talk by Matt Trask in Multnomah Falls (50 minutes)

Between the Verbs, the Headers, and the Status Codes it can get quite confusing to know which headers to use and which status codes to use. Rather than throwing our hands in the air and returning a 200 OK with an error body message, we can leverage the codes and headers to help our end user have a better experience with our API and reduce developer frustration. This talk takes people on a tour to understand what headers exist, what other codes are out there besides 200, 404, and 418, and when someone should use PUT or PATCH.

0
Migrating Databases and Maintaining Sanity: A Journey into Consistent Configurations
Talk by Gabriela Ferrara in Crater Lake (50 minutes)

This talk explores the challenges and intricacies of migrating databases in several scenarios: on-premises environments to the cloud, from dev to prod, or cloud-to-cloud. Expect a focus on ensuring consistency, managing configurations, and performance throughout the process. We'll delve into the nuances of lifting and shifting databases across various cloud providers, addressing potential conflicts arising from differing configurations and behaviors. We'll examine the implications of cloud-based database forks like RDS Aurora and AlloyDB, shed light on strategies to mitigate vendor lock-in and balance the trade-offs between cloud-specific features and open-source flexibility.

15:00
0
/Regex makes me want to (weep|give up|(╯°□°)╯︵ ┻━┻)\.?/i
Talk by brettflorio in Multnomah Falls (50 minutes)

REGEX! Love it or hate it, sometimes you actually need it. And when that time comes, there’s no reason to be afraid or to ask for help from that weirdo on your team who actually loves regular expressions. (I’m that weirdo.) This session is geared towards beginning and intermediate regex users, and will cover topics using practical examples that you might encounter in your own projects.

0
How To Make Your Website A Progressive Web App (And Why You Might Want To)
Talk by Lemon in Crater Lake (50 minutes)

For years, web developers and app developers have been siloed, looking at each other with jealousy. How come these people get to do push notifications? How come these people have such a simple build process? And why can’t we all just work with the same codebase? A PWA (Progressive Web App) marries all these needs together, starting with a run-of-the-mill website and adding features as they’re appropriate. The most interesting part: You can start with a website you’ve been working on right now. In this talk, Lemon will take you through the process of starting with a simple HTML website add add features like caching, notifications, desktop installation and offline mode to create an app that’s as interesting and dynamic as you’d want it to be.

16:00
0
Growing your engineering garden
Talk by Kenneth Love in Multnomah Falls (50 minutes)

Engineering departments need careful planting and tending. Kenneth Love shares their experiences and lessons learned in onboarding, mentoring, and maintaining an engineering department and team.

0
The Beauty of PHP Value Objects
Talk by Steve Grunwell in Crater Lake (50 minutes)

Imagine, if you will, a world where you're able to define a tailor-made type for domain objects that is always valid, type-safe, immutable, and easy to test. No more email addresses passed around as plain strings, nor associative arrays being passed around with potentially-undefined keys and unpredictable types. In this session, we'll dive deep into PHP Value Objects: where are they useful, how do we write (and test!) them, and how do we ensure that the data they encapsulate is valid? Attendees will leave with a better understanding of domain modeling, Value Objects, and immutability. Warning: once you start using proper value objects, you may never be able to go back to using anything else!

Saturday 26th October 2024

09:00
0
Let's Build a Composer Package
Workshop by Ben Ramsey in Willamette (2 hours, 50 minutes)

You've downloaded and installed open source libraries, required them as Composer dependencies, and perused the source code of countless GitHub repositories. Now, you're ready to help others by creating your own Composer package. So, what does it take to build and publish an open source library? In this session, we'll take a look at some of the common patterns open source PHP libraries follow. Along the way, we'll cover: evaluating libraries for quality, common directory structures, the importance of tests and how to run them on GitHub Actions, publishing to Packagist, choosing a license, interacting with a community, and more. By the end of this workshop, you will have all the tools you need to publish and distribute your own Composer package.

0
Living in a Post-Test World
Talk by Chris Hartjes in Multnomah Falls (50 minutes)

From 2005 until 2022 I spent a lot of energy trying to convince you to write tests for your PHP code, using a variety of techniques and approaches. Then I decided to stop teaching people to test at conferences. Instead, I want to share my thoughts on where we are in 2024 in terms of overall commitment to testing. What other tools are out there? Does it matter what tools you use? Does it matter if you actually have automated tests? Mutation testing? Static code analysis? Code reviews? Snarky chat sessions? Even though the basics haven't changed, how we can learn from the successes and failures of others can greatly help you come up with a testing plan that works for you. The goal is confident deployments to production at any time!

0
Embracing Enums
Talk by Andy Snell in Crater Lake (50 minutes)

In January 2020, I delivered a conference talk titled 'Enums: The Missing Data Type', which ended on a sour note: PHP probably would not have a native type for handling enumerations any time soon. To my surprise and delight, PHP 8.1 would release with a new 'Enum' type less than two years later. Now we can really explore enumerations: both the theory behind them and the current PHP implementation. We’ll cover how representing things like statuses with enums improves immutability, readability, and type safety; why limitations like not being able to extend enums are actually a good thing; and some tricks to get the most out of using enums in your code.

10:00
0
Start at the Finish Line, TDD in Laravel
Talk by Kurtis S Holsapple in Multnomah Falls (50 minutes)

Coming Soon

0
In Defense Of The "Monolithic Microservice"
Talk by Sarah Savage in Crater Lake (50 minutes)

Microservices get a bad rap online. From unnecessary complexity to challenging architectures, developers are warned about the dangers of microservices. But the monolith is no picnic. How can we solve for this difficult problem? The answer is "monolithic microservices". Come learn how to break up your monolith into smaller services that don’t quite fit the microservice architecture, but still streamline development, improve workflow and simplify your life.

11:00
0
Code Review: It's for Me and You!
Talk by Tim Bond in Multnomah Falls (50 minutes)

Code reviews are not about catching bugs; code reviews are tools for your entire team to understand the changes being made to your codebase. This talk will cover some best practices on when code reviews should be done (spoiler alert: always!), what the author should be providing in the code review, and what you can do to make sure that both you and the author get the most out of the review. Finally we'll discuss things that aren't part of the review process.

0
How to tame a 🦄
Talk by Andreas Heigl in Crater Lake (50 minutes)

You've got strange characters like "�" or "ö" display in your application? Yes, handling non-English characters in application code, files and databases can be a challenge, to say the least. Whether that's German Umlauts, Cyrillic letters, Asian Glyphs or Emojis: It's always a mess in an international application. In this session you will see why that is and how handling characters evolved in computing. You will also see how handling characters in applications and databases can be done less painfully. And don't worry when EBCDIC, BOM or ISO-8859-7 are Greek to you and your Unicode is a bit rusty: we'll have a look at them too!

13:00
0
AI Panel (50 minutes)

Let's have a discussion around AI

14:00
0
Git Legit
Workshop by Pauline Vos in Willamette (2 hours, 50 minutes)

If you're fighting with Git on a regular basis, you might not be using it optimally. This workshop will give you hands-on exercises to tweak your daily Git habits and become a more productive developer. From best practices like atomic commits, to advanced mythical beasts like finding bugs with bisect. Next time you're pulling your hair out from rebase hell, remember this workshop.

0
Diagram Like a Principal Engineer
Talk by Jeremy Lindblom in Multnomah Falls (50 minutes)

What separates software engineers from principal software engineers? Mainly communication skills. One of the main communication skills in the principal engineer’s toolbelt is **diagramming**. In this session we’ll discuss different types of diagrams and their purposes. Then we’ll look at different tools we can use to make and share diagrams. Hopefully, we’ll all come out of this with a greater ability to draw boxes and arrows in a way that can bring about better software and teamwork and bigger paychecks.

0
Fairytale vs. Narrative: Telling stories and making decisions with data
Talk by Kaitlyn Concilio in Crater Lake (50 minutes)

Everyone wants to be data-driven: "We want to do things empirically correctly, so we just rely on the data to provide a value-neutral assessment of the best course forward." Except for the most part, data-driven tends to be data-informed, at best. Because you can tell any story from a given set of data. We'll talk what data can actually tell you vs. what it can't, looking at specific case studies and examples. We'll discover how to find the right data to help drive your decisions, and how you might actually be able to collect it. And at least once I will get so upset about someone using data incorrectly I'll start sputtering, which is pretty amusing for everyone.

15:00
0
PHPStan - The PHP Static Analysis Tool
Talk by Drishti Jain in Multnomah Falls (50 minutes)

Imagine a world where your PHP codebase can be checked for all the bugs without even writing testcases – doesn’t this sound the BEST!? Here is where PHPStan comes to our rescue. An opensource Static Analysis tool to check for the bugs in the entire PHP codebase without writing tests! It can run directly on your setup as well as in CI to detect and prevent the bugs reaching production. Join me in this talk as I take you through PHPStan, how it is legacy friendly, helps eliminate the tricky bugs, its extensions for Symphony, Laravel; and much more!

0
Rise of the Machines - an intro to Machine Learning
Talk by Josh Holmes in Crater Lake (50 minutes)

Coming Soon

16:00
0
creating a great developer experience
Talk by Rain Leander in Multnomah Falls (50 minutes)

Coming Soon

I'd Like to Write the World Some Docs
Talk by Steve Grunwell in Crater Lake (50 minutes)

It takes a special kind of person to enjoy writing documentation; not only do I have to write [ideally] working code, but now I have to write words that a human being can understand? What is this madness?! Luckily, good documentation lives on outside your codebase. By following common documentation standards, we can generate comprehensive manuals that instruct others how to integrate with our software. After all, to code is human, but to document is divine.