Joel and Aaron compare two very different ways to tackle pull-requests—reviewing them commit-by-commit or scanning the whole thing at once. They dig into when each approach shines, how “atomic” commits can help (or hurt) reviewers, and why understanding how your teammate’s brain works is a super-power. Along the way they share practical tips for leaving yourself notes, spotting hidden changes, and keeping large refactors under control. (00:00) - The “gift” of a pull request and the pain of huge ...
Jul 19, 2025•16 min•Ep. 131
Joel and Aaron explain why every project should start in the client’s own GitHub organization—even when the client has never heard of Git. They share scripts, onboarding tips, and war-stories that show how small setup shortcuts turn into big headaches later. You’ll learn a repeatable way to protect both your reputation and your client’s code base. (00:00) - Intro & episode setup (01:15) - Create the repo in their org (02:15) - Quick hack versus right process (03:30) - Project-setup technical...
Jul 05, 2025•11 min•Ep. 130
Joel and Aaron unpack how they use code-coverage numbers as a starting signal rather than a finish line. They discuss realistic thresholds, choosing the right tool for each test layer, and why coverage metrics can double as negotiation leverage inside big organizations. Listen in for practical ways to decide what to test—and when to stop. (00:00) - Testing passion vs. shipping work (01:00) - Coverage tells you what’s missing (03:45) - Picking a baseline metric that grows (06:15) - Draw the line ...
Jun 21, 2025•16 min•Ep. 129
Joel and Aaron unpack a recent client project where the only spec was “make these two systems talk.” They share how console-level prototypes helped them clarify data mapping, test tricky scenarios, and keep the client looped in without over-building a UI. If you’ve ever had to code first and document later, this one’s for you. (00:00) - Bridging two APIs with minimal specs (03:30) - Choosing an exploratory workflow over full UI (06:00) - Console closures for quick, testable steps (09:15) - Hand-...
Jun 07, 2025•15 min•Ep. 128
Joel and Aaron dig into Laravel’s `Stringable` class and uncover how it can silently skip Blade’s automatic HTML escaping. They explain why that’s both a convenient feature and a potential security pitfall if user input isn’t properly sanitized. You’ll hear practical ways to keep your views safe without losing the API’s fluency. (00:00) - Stringable can sidestep Blade escaping (03:45) - Dangers of outputting unsanitized HTML (05:45) - Defensive strategies for safe rendering (08:45) - Silly bit S...
May 24, 2025•11 min•Ep. 127
Picking up where last week’s “Why ‘no time’ really means ‘no priority’” left off, Joel and Aaron tackle the next hurdle: what to do once the benefits are crystal‑clear but you (or your team) still hesitate. They unpack the hidden frictions—fear of discomfort, stakeholder pushback, or sheer inertia—that keep valuable tasks on the back burner. You’ll hear a quick mental exercise for elevating true priorities and concrete tactics for transforming “someday” into forward motion today. (00:00) - “No t...
May 10, 2025•12 min•Ep. 126
Joel and Aaron tackle the common objection, “We don’t have time,” and show why it usually hides a priority problem. They discuss how to convey the true payoff of process improvements by sharing honest before‑and‑after stories instead of vague promises. You’ll leave with practical ideas for getting buy‑in—whether you’re pitching tests, planning habits, or any other change. (00:00) - “No time” excuse versus priorities (01:45) - Selling the value of improvements (03:45) - Sharing real before‑and‑af...
Apr 26, 2025•11 min•Ep. 125
Joel and Aaron show how ignoring GET request validation can cause performance issues and open your application to abuse. They highlight the importance of bounding pagination and share tips for using form requests to handle unexpected user input. Now go check out the best/only Laravel validation book (00:00) - Quiz on Laravel’s default pagination limit (01:00) - Performance concerns with large datasets (03:20) - Validating per-page requests in controllers (05:45) - Why you should block negative p...
Apr 12, 2025•12 min•Ep. 124
Joel and Aaron explore why pushing too many layers of abstraction can backfire in a Laravel application. They highlight the benefits of sticking to the framework’s conventions for long-term maintainability and simpler handoff to future developers. (00:00) - Why framework paradigms really matter (01:00) - When extra abstractions become burdens (03:00) - Balancing creativity with Laravel’s conventions (05:15) - Keeping code easy to revisit (06:45) - silly bit Need help digging your project out of ...
Mar 29, 2025•9 min•Ep. 123
Joel and Aaron explore the decision-making process behind hiring or consulting an expert for technical challenges. They discuss examples like adding tests to a large codebase and understanding what questions you need to ask. They also reveal how coaching can help teams avoid common pitfalls and reach solutions faster. (00:00) - Determining why you need outside expertise (02:15) - Pinpointing the real problem (skill gap or strategy) (05:00) - Deciding between hands-on help or coaching (08:30) - L...
Mar 15, 2025•11 min•Ep. 122
Joel and Aaron discuss the benefits of having distinct databases for testing and local development. They share how this approach ensures a reliable test suite and avoids conflicts with day-to-day dev work. In the process, they reveal a simpler workflow for setting up new environments and keeping projects stable. (00:00) - Why separate dev and test databases (02:15) - Automating database setup with seeders (05:00) - Avoiding flaky tests and migration pitfalls (09:00) - Reimagining old habits with...
Mar 01, 2025•15 min•Ep. 121
In this episode, Joel and Aaron discuss the struggles of learning new technology on a late-night side project. They share tips for handling frustration and managing expectations. (00:00) - Late-night MicroPython struggles and revelations (02:15) - Overcoming complex hardware and language hurdles (05:15) - Balancing side projects with realistic expectations (10:30) - Silly bit Don't be a stranger. Check out the Mastering Laravel community ....
Feb 15, 2025•14 min•Ep. 120
Joel and Aaron explore the value of using concise video demos instead of long emails or scattered screenshots. They discuss which clients benefit from quick visuals and when text is still best. Want to see us on camera? Join the Mastering Laravel community for our live dev calls. (00:00) - Recording brief Loom demos for updates (02:15) - Considering audience and communication style (05:00) - Video calls vs. text-based explanations (07:45) - Silly bit...
Feb 01, 2025•10 min•Ep. 119
Joel and Aaron debate how to structure multi-tenant API requests and tests. They explore the interplay between authentication, tenant headers, and different levels of validation. In the end, they reminisce about old infomercial freebies and wonder if they still exist. (00:00) - Debating authentication vs. tenant header priority (02:15) - Handling unusual requirements in request tests (05:00) - Navigating multi-layer middleware concerns (08:30) - Balancing thoroughness and test coverage (12:00) -...
Jan 18, 2025•14 min•Ep. 118
Joel and Aaron explore the nuances of when to venture beyond Eloquent in Laravel applications. They discuss specific scenarios where using lower-level database tools might be necessary, while emphasizing the importance of not abandoning Eloquent entirely. The conversation provides practical insights into balancing framework features with performance needs. (00:00) - Exploring when to step outside framework defaults (02:30) - Handling complex sorting with related tables (05:25) - Balancing Eloque...
Jan 04, 2025•12 min•Ep. 117
Joel and Aaron dive into a friendly debate about the true nature of feature flags in software development. Drawing from their varied experiences across different programming languages and environments, they explore whether feature flags should always be temporary or can serve permanent purposes. The discussion evolves from a simple disagreement into deeper insights about different architectural approaches. (00:00) - Newsletter tips undergo careful peer review process (02:15) - Debating if featur...
Dec 21, 2024•10 min•Ep. 116
Ooh, something new was just announced. And I have this project coming up. It could be perfect! But should I use it? On today's episode of No Compromises, Aaron and Joel share a conversation they had along these lines on a recent client project and considering the new Flux library from the creator of Livewire. (00:00) - Discussing potential Flux adoption in Bootstrap project (01:00) - Flux explained: Livewire-based UI component library (04:45) - Risk assessment of adding new technologies (06:00) ...
Dec 07, 2024•14 min•Ep. 115
Programmers love geeking out and creating specialized terms and vocabulary. Well I can do that too. In today's episode, we talk about "value objects", put our own special definition on it, and discuss when we might use these in a Laravel project. (00:00) - What I mean by "value object" (03:00) - Nicer to do in newer PHP versions (04:00) - Main use case for value objects (05:30) - Use them for everything then? (09:00) - A second reason to use a value object (10:45) - Silly bit Sign up for our new...
Nov 23, 2024•12 min•Ep. 114
Have you ever struggled working with a third party on one of your developer projects? How do you handle that, keeping it professional and also still able to meet your commitments? In today's episode of No Compromises, Aaron and Joel discuss what happened on a recent project and how they think about handling those kinds of difficulties while still having boundaries. And if you're looking for help on your Laravel project, get in touch !...
Nov 09, 2024•10 min•Ep. 113
JSON fields can be very useful, but when is a good time to include them in your database design? In today's episode of No Compromises, Aaron and Joel use a couple examples from recent projects to talk through reasons they would and would not use a JSON field. (00:00) - Debating JSON fields in database design (03:06) - Configuration options: JSON vs. relational tables (07:05) - Real-world example: label customization dilemma (11:30) - Silly bit Want a place to ask any question related to Laravel ...
Oct 29, 2024•14 min•Ep. 112
Static types and tooling have increased the quality of our apps, but sometimes certain features in your Laravel app don't play nicely with static analysis. In today's episode, we talk about how we approach the tradeoffs around making a tool happy without changing how you write code. (00:00) - Our approach to static analysis in a Laravel app (01:30) - Using PHPDoc inline (03:00) - When Laravel doesn't quite give you the type you want (05:00) - A different approach than inline types (06:30) - Are ...
Oct 15, 2024•12 min•Ep. 111
I write a lot about testing in the Mastering Laravel newsletter. Ever wonder why it's a topic I care so much about? In today's episode, we discuss that question and come up with a few different reasons. (00:00) - Why do we like testing so much? (01:20) - Looking back at how we learned (02:30) - Making it easier to join a project (05:45) - Tests make you more productive (07:45) - Shifting your thinking (10:10) - Silly bit Let us help you add tests to your project ....
Oct 01, 2024•12 min•Ep. 110
What does it really mean when you say you know a particular technology? On today's episode, we discuss this using TypeScript as a specific example. (00:00) - What does it mean to "know" something? (03:15) - Thinking about TypeScript vs strict types in PHP (05:30) - Are you fluent? (06:50) - Silly bit Want help with your Laravel or PHP project ? We really know that!
Sep 17, 2024•10 min•Ep. 109
Programmers are not shy about telling other programmers when they're wrong. But what can we learn in a situation like his? How can we be wrong with style? In this episode, Aaron and Joel talk about times they've been wrong throughout their career and what they've learned. (00:00) - Aaron admits he was wrong (02:00) - What can I learn from this? (05:30) - Being wrong in public with style (07:00) - Being wrong throughout your career (08:45) - Two people can both be right for their context (10:10) ...
Sep 03, 2024•12 min•Ep. 108
We can't know everything, so throughout each day we inevitably have questions. On today's episode, we discuss different approaches we have used when we need a little help. (00:00) - Where do you go when you need help? (01:30) - Option 1 - search engines (03:30) - Getting the most out of search results (05:00) - Option 2 - talk to AI (07:00) - Using AI in the right context (09:10) - Option 3 - talk to a person (11:30) - What if you work alone? (12:55) - Silly bit Looking for a community of smart ...
Aug 20, 2024•14 min•Ep. 107
The dreaded bug report: this app is slow. Ok, but what is slow? I have so many questions! In today's episode, we discuss our approach to getting more information out of that initial bug report, and a methodical approach to locate and quantify the slowness. If you'd like help setting up tools like Xdebug profiling , send us a message.
Aug 06, 2024•14 min•Ep. 106
Writing tests that communicate with a third party can be a little tricky, but we've found an approach that balances speed and confidence. In today's episode, we share that approach and talk through a strategy of how frequently to run tests that talk to the outside world. (00:00) - Why would your tests ever talk to an external service? (02:30) - What does it mean to have a separate test suite? (06:00) - Keeping them separate allows different triggers for running (07:00) - When should you run exte...
Jul 23, 2024•18 min•Ep. 105
I don't have time to write an API spec. We're not a giant team. We don't have external users of our API. I've said all these things in the past, but in today's episode, we discuss why you should still consider writing a specification for your Laravel API. (00:00) - Should you write a spec for your API? (01:37) - Thinking through the requirements (04:07) - What's in a spec? (06:20) - Balancing detail with moving forward (08:15) - Who is consuming the spec? (09:30) - The spec keeps you honest Woul...
Jul 09, 2024•15 min•Ep. 104
Maybe you've tried to add static analysis to your Laravel app and got scared away by all the errors. In this episode we discuss how we like to introduce PHPStan to large, long-lived projects in a way that doesn't introduce a lot of risk or change. Would you like help introducing Larastan to your project ? That's one of many things we can help you with! This episode is sponsored by Mailtrap, an Email Delivery Platform that developers love. Try for Free at MAILTRAP.IO...
Jun 25, 2024•15 min•Ep. 103
Why isn't this working? It can be frustrating when something doesn't work as expected! In this episode, we talk through a recent issue Joel had with sessions and oauth flows. There are a couple principles that apply more broadly. Next time you're stuck on something, let us help! This episode is sponsored by Mailtrap, an Email Delivery Platform that developers love. Try for Free at MAILTRAP.IO...
Jun 11, 2024•12 min•Ep. 102