No Compromises
Episodes
Do you actually need a multi-tenancy package?
25 Apr 2026
Contributed by Lukas
Ever feel like a project requirement says "we need multi-tenancy," and you're not even sure what that means in your specific context?In the latest epi...
Local and production should match even for Laravel tools
11 Apr 2026
Contributed by Lukas
Ever installed a Laravel package locally and immediately accessed it, only to wonder later whether your access controls are actually working in produc...
When weird code needs to explain itself
28 Mar 2026
Contributed by Lukas
Have you ever looked at a colleague's code and thought, "This is clearly wrong," only to find out it was actually a well-reasoned workaround for a tri...
Are you testing your app or just the framework?
14 Mar 2026
Contributed by Lukas
Do you ever finish writing a test and wonder if it is actually proving anything about your code or just confirming that Laravel works?In the latest ep...
Being anti-hype does not mean being anti-AI
28 Feb 2026
Contributed by Lukas
Does everyone need to have an AI hot take right now, or is there value in waiting until you actually know what you're talking about?In the latest epis...
Three ways to plan an upgrade when your codebase is a patchwork
14 Feb 2026
Contributed by Lukas
When your project has the same thing done three different ways, how do you bring everything up to date with a consistent approach?In the latest episod...
Stop doing math in your config files
31 Jan 2026
Contributed by Lukas
Ever feel the urge to write out calculations in your code to make them "self-documenting"?In the latest episode of the No Compromises podcast, we disc...
What could be worse than having no tests?
17 Jan 2026
Contributed by Lukas
Found a cool package on Laravel News? But how do you know if it's actually worth installing?In the latest episode of the No Compromises podcast, we di...
Why I changed my mind about down migrations
04 Jan 2026
Contributed by Lukas
Have you ever built a strong case for something, only to realize later you were solving the wrong problem?In the latest episode of the No Compromises ...
Why senior developers feel wrong more often
20 Dec 2025
Contributed by Lukas
Ever catch yourself second-guessing decisions you were confident about just months ago? Does that mean you're getting worse at your job?In the latest ...
Should you ever hand-format code?
06 Dec 2025
Contributed by Lukas
Ever feel like you're wasting your time tweaking a section of code to get it just right? We have tools for that, don't we? In the latest episode of ...
Discussing different ways to model data
22 Nov 2025
Contributed by Lukas
It's easy to overcomplicate data modeling, especially when enums, relationships, and future requirements are in play. In the latest episode of th...
Read outside tech to expand your horizons
08 Nov 2025
Contributed by Lukas
It's easy to get so laser-focused on programming and tech, that you close yourself off to other avenues of learning.In the latest episode of the No Co...
Rewriting without a map: shipping an MVP from a legacy app
25 Oct 2025
Contributed by Lukas
Multiple times we have encountered the messy reality of rebuilding a decade-old system: stale specs, missing specs, and stakeholders who want "the sam...
A composable, versioned toolkit for Laravel projects
11 Oct 2025
Contributed by Lukas
We join a fair number of projects, and we often help teams bring their project up to our standard. This means bringing a lot of the same small pieces ...
Should you use DTOs in Laravel?
27 Sep 2025
Contributed by Lukas
DTOs (Data Transfer Objects) aren't mentioned anywhere in the Laravel docs, but some devs use them heavily in their applications, whereas other devs n...
Sunsetting a company app without loose ends
13 Sep 2025
Contributed by Lukas
Business change and projects end, but how do you wrap up and sunset an app, especially one you've worked on for years?In the latest episode of the No ...
When building a UI makes more sense than bloating your seeders
30 Aug 2025
Contributed by Lukas
What do you do when you need to create some data but you haven't built out the UI for that data yet? A seeder is a great approach, but is it always th...
Blade includes vs components: how we decide
16 Aug 2025
Contributed by Lukas
Blade gives you two big levers for keeping views maintainable: @include and Blade components.When should you use one versus the other?Does it matter?I...
Changing your mind about when() and unless() in Eloquent
02 Aug 2025
Contributed by Lukas
Aaron admits he used to wrap every query in plain old if-statements—until Laravel’s when()/unless() helpers (and arrow functions) won him over. He...
Finding a code-review style that fits your brain
19 Jul 2025
Contributed by Lukas
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...
Never take hostages: give clients control from day one
05 Jul 2025
Contributed by Lukas
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 sh...
Balancing test coverage without chasing 100 percent
21 Jun 2025
Contributed by Lukas
Joel and Aaron unpack how they use code-coverage numbers as a starting signal rather than a finish line. They discuss realistic thresholds, choosing t...
Exploratory coding when requirements are fuzzy
07 Jun 2025
Contributed by Lukas
Joel and Aaron unpack a recent client project where the only spec was “make these two systems talk.” They share how console-level prototypes helpe...
Understanding how Stringable works inside Blade views
24 May 2025
Contributed by Lukas
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’...
Finishing up our discussion on not having time
10 May 2025
Contributed by Lukas
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...
Why “no time” really means “no priority”
26 Apr 2025
Contributed by Lukas
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 t...
When validation can protect your app's performance
12 Apr 2025
Contributed by Lukas
Joel and Aaron show how ignoring GET request validation can cause performance issues and open your application to abuse. They highlight the importance...
Stick with conventions and avoid overengineering your Laravel app
29 Mar 2025
Contributed by Lukas
Joel and Aaron explore why pushing too many layers of abstraction can backfire in a Laravel application. They highlight the benefits of sticking to th...
When to bring in outside help
15 Mar 2025
Contributed by Lukas
Joel and Aaron explore the decision-making process behind hiring or consulting an expert for technical challenges. They discuss examples like adding t...
Why two databases are better than one
01 Mar 2025
Contributed by Lukas
Joel and Aaron discuss the benefits of having distinct databases for testing and local development. They share how this approach ensures a reliable te...
Dealing with being a beginner again
15 Feb 2025
Contributed by Lukas
In this episode, Joel and Aaron discuss the struggles of learning new technology on a late-night side project. They share tips for handling frustratio...
Making short demo videos count
01 Feb 2025
Contributed by Lukas
Joel and Aaron explore the value of using concise video demos instead of long emails or scattered screenshots. They discuss which clients benefit from...
Examining test layering in multi-tenant requests
18 Jan 2025
Contributed by Lukas
Joel and Aaron debate how to structure multi-tenant API requests and tests. They explore the interplay between authentication, tenant headers, and dif...
When to step outside of Eloquent's comfort zone
04 Jan 2025
Contributed by Lukas
Joel and Aaron explore the nuances of when to venture beyond Eloquent in Laravel applications. They discuss specific scenarios where using lower-level...
Feature flags: Temporary tool or permanent solution?
21 Dec 2024
Contributed by Lukas
Joel and Aaron dive into a friendly debate about the true nature of feature flags in software development. Drawing from their varied experiences acros...
Deciding when to use a new piece of technology
07 Dec 2024
Contributed by Lukas
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 Compromise...
Taking liberties with value objects
23 Nov 2024
Contributed by Lukas
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",...
How to deal with things outside your control on a dev project
09 Nov 2024
Contributed by Lukas
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 a...
Should we use a JSON field for this?
29 Oct 2024
Contributed by Lukas
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 ...
A balanced approach to static analysis in Laravel apps
15 Oct 2024
Contributed by Lukas
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 anal...
Why do we like testing so much?
01 Oct 2024
Contributed by Lukas
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 tha...
What does it mean to "know" something?
17 Sep 2024
Contributed by Lukas
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...
How to approach being wrong
03 Sep 2024
Contributed by Lukas
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 st...
Where do you go when you need help?
20 Aug 2024
Contributed by Lukas
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 w...
What does it mean if someone says your app is slow?
06 Aug 2024
Contributed by Lukas
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 i...
Why we have a separate test suite for external services
23 Jul 2024
Contributed by Lukas
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 ep...
API specs aren't just for giant teams
09 Jul 2024
Contributed by Lukas
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...
Slowly introducing static analysis without changing everything
25 Jun 2024
Contributed by Lukas
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 introdu...
Troubleshooting an empty session
11 Jun 2024
Contributed by Lukas
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 se...
Magic methods are okay in the right context
28 May 2024
Contributed by Lukas
"Magic" methods and properties show up several places in Laravel, as well as third-party packages. They can make certain things easier and less verbos...
Should you let your admin do that?
14 May 2024
Contributed by Lukas
Admins can do everything in the app, right? Today we discuss a couple reasons why you may want to consider not letting an admin have access to every s...
Don't get overwhelmed by errors in your application
30 Apr 2024
Contributed by Lukas
Have you ever turned on error tracking in a long-lived app and then got overwhelmed by all the errors happening? We talk through some strategies to no...
Does it matter how your code looks?
16 Apr 2024
Contributed by Lukas
We've talked about coding standards before, but this time we approach it from a slightly different angle. Does the way you're code is formatted affect...
The life cycle of database hosting
02 Apr 2024
Contributed by Lukas
You launched a hobby project and then it starts to get some traction. What next? How do you get a more solid foundation under your app when it comes t...
Are you really going to need that abstraction?
19 Mar 2024
Contributed by Lukas
Interfaces are a great tool for writing maintainable applications, but it is possible to go "too far" with abstraction. Or maybe, it's a bad use of ti...
Should you change application code to support a test?
05 Mar 2024
Contributed by Lukas
When you're writing a test it can be so tempting to just "tweak" some app code to make it easier to write that test, but we discuss why that might not...
What is the point of design patterns?
20 Feb 2024
Contributed by Lukas
Do your eyes glaze over when someone mentions singletons or factories? We'll try to not to be boring as we explain the benefits of design patterns.Sig...
Move that logic out of your view
06 Feb 2024
Contributed by Lukas
Ever feel like your Blade views are getting too logic-heavy? What logic belongs in the view, and what logic would be better somewhere else? We use a r...
Is it worth switching to another tool?
23 Jan 2024
Contributed by Lukas
When new tools and packages come out, there is usually some buzz around the launch, and how it solves all the problems of the old tool. Should you swi...
How we use seeders in our applications
09 Jan 2024
Contributed by Lukas
Seeders seem pretty straightforward. It's a way to generate data. But how should you use them in your app and what different purposes do they serve? W...
Don't just get mad at some tech, dig in and learn!
26 Dec 2023
Contributed by Lukas
Is there some particular tool or technology that just makes you mad? Maybe it's the way CSS behaves or how some browsers work. Don't just get mad, dig...
Making a case for consistency
12 Dec 2023
Contributed by Lukas
We see a lot of different projects, but it's pretty rare to find one that's well-documented and internally consistent. Why does that matter? And how c...
Different approaches to upgrading to a new major Laravel version
28 Nov 2023
Contributed by Lukas
How do you like to upgrade your app when the next new major version of Laravel comes out? Aaron and Joel share two different approaches they've used, ...
Maybe you don't need to write code this time
14 Nov 2023
Contributed by Lukas
We're developers, we write code! But sometimes it's worth thinking if we really need to fire up our editor, or if a better solution exists. We talk th...
Should you manage roles and permissions with a UI?
31 Oct 2023
Contributed by Lukas
Just about every application needs the concept of roles and permissions. Often, there's a desire to allow non-developers to manage roles and permissio...
The changing value of books throughout your career
17 Oct 2023
Contributed by Lukas
You might have a book that really shaped how you write code today. Some books make more sense if you read them later in your career. We discuss the ch...
Some reasons to write a down method in your migrations
03 Oct 2023
Contributed by Lukas
This is a surprisingly controversial topic. In this episode, we share why we write down migration methods, and it's probably not the reason you're thi...
Managing a micro-manager
19 Sep 2023
Contributed by Lukas
It's frustrating to have a client, boss, or even co-worker attempt to micro-manage you. We share some tips on how to make the working relationship bet...
A couple handy features in PHPStorm
05 Sep 2023
Contributed by Lukas
Developers spend a large part of their day inside an editor. For a full-featured editor like PHPStorm, there may be some useful features you've never ...
Tools should work for you, not boss you around
22 Aug 2023
Contributed by Lukas
PHPStan is a great tool, but if you're not careful it might push you to write code in a way you wouldn't normally write it. How can you balance a tool...
Harnessing that post-conference excitement
08 Aug 2023
Contributed by Lukas
It is so exciting to watch a conference talk announcing some new tool or feature. Now you're back at work and your fingers are itching to type `compos...
How do you tell a teammate they might be wrong?
25 Jul 2023
Contributed by Lukas
Programmers have opinions on things. Shocking, I know! How can we tell someone we think there's a better way to do something, without being counterpro...
Lots of different ways to test record creation
11 Jul 2023
Contributed by Lukas
We get a bit nerdy here and dive deep on a few different ways to test record creation.(00:00) - We like testing (01:20) - One way to test creating a ...
How do you avoid distractions?
27 Jun 2023
Contributed by Lukas
Do you maintain laser focus when you work, or are you a normal human being? How do you balance use of email and social media for legitimate work reaso...
When should you use final classes or private properties?
13 Jun 2023
Contributed by Lukas
The discussion of final classes was a hot topic recently. We had planned on discussing this even before it came up on Twitter, but here is our unsolic...
Is it ever ok to delay writing tests?
30 May 2023
Contributed by Lukas
We always write tests, and can't imagine working without them. But is there ever a time where it might make sense to delay writing some tests until la...
Should an Eloquent relationship include soft-deleted records?
16 May 2023
Contributed by Lukas
Show notes:(00:00) - Relationships and trashed records (02:00) - One-to-one relationship (02:39) - Are soft-deletes bad then? (03:30) - Balancing e...
Interviewing other developers like a human
02 May 2023
Contributed by Lukas
Some interviewing techniques can be pretty disrespectful of the applicant's time or humanity. On today's episode we talk about some ways of approachin...
The benefits of working with other developers
18 Apr 2023
Contributed by Lukas
Maybe you're a solo dev or working on a small team. What benefits are there in widening your circle of developers? We talk through our own personal ex...
Changing our mind about queues in testing
04 Apr 2023
Contributed by Lukas
We'll admit it: sometimes we change our mind. In this episode, we discuss how we used to setup queues in Laravel tests, and why we changed it.Show Not...
Too many rules?
21 Mar 2023
Contributed by Lukas
Rules in programming can be extremely helpful, especially on a team. But is it possible to go too far with rules? We discuss a couple recent scenarios...
Keeping an open mind with other languages and tools
07 Mar 2023
Contributed by Lukas
Before you vent some frustration on another tool or programming community, take a deep breath and think about why you're irritated? We talk about our ...
What we look for in a package
21 Feb 2023
Contributed by Lukas
We have such a rich ecosystem of packages in the Laravel and PHP community. But can there be too much of a good thing? What do we consider before addi...
Blogging versus tweeting
07 Feb 2023
Contributed by Lukas
Laravel has a vibrant community of people teaching and sharing what they've learned. What makes a good tip? Should you tweet or blog or both?00:00 Why...
Knowing when to use new language or framework features
24 Jan 2023
Contributed by Lukas
New PHP version! New Laravel version! So exciting! But when does it make sense to upgrade, and when does it make sense to start using new language or ...
Going on a bug hunt
10 Jan 2023
Contributed by Lukas
How can a bug be fun, and not frustrating? When you treat it like a puzzle. Let's walk through a recent bug with CSV mime type validation and go deep ...
Thinking about the user, even in the details
27 Dec 2022
Contributed by Lukas
User experience is a term we hear a lot as developers, but it can mean different things depending on the context. We discuss a recent project where de...
Why do you write your tests like that?
13 Dec 2022
Contributed by Lukas
We discuss two "interesting" patterns we've observed in a number of Laravel projects. Let's take a step back and think about why we write tests the wa...
Avoid painting yourself into a corner
29 Nov 2022
Contributed by Lukas
We've all been there: a thorny piece of code works, but it seems like there must be a better way to simplify it or make it more readable. We share one...
Look before you leap
15 Nov 2022
Contributed by Lukas
Hear about some cool new tool or coding technique on Twitter? Great, jump right in and use it on your biggest production app! Or . . . maybe don't. We...
Don't plan to do too much
01 Nov 2022
Contributed by Lukas
Do you always finish everything you plan on doing? Probably not, very few developers do. The problem isn't always how you work. Some of it is how you ...
Isolate the problem
18 Oct 2022
Contributed by Lukas
What do you do when you're stuck? Aaron shares a tip on how he breaks down a problem when he's feeling stuck.Are you stuck with your Laravel/PHP proje...
What should I test?
04 Oct 2022
Contributed by Lukas
We all know we should write tests, but what should we test? Is there anything it doesn't make sense to test? We talk through a high-level approach to ...
Picking a strategy for translation in Laravel
20 Sep 2022
Contributed by Lukas
There are different ways to structure your translation assets in Laravel. We discuss how we approached this on a recent project, and why we chose the ...
Should a factory follow all business rules?
06 Sep 2022
Contributed by Lukas
Factories are really useful in tests, but could they give you a false sense of security if they don't generate models exactly like a user of your appl...
Understanding different learning styles
23 Aug 2022
Contributed by Lukas
What a surprise, Joel and Aaron have a different learning style. We talk through our different approaches to learning, and what we've found useful.Did...
Sometimes it's good to be boring
09 Aug 2022
Contributed by Lukas
Do you like to fiddle with settings? Joel doesn't. Find out why, and hear about one example where we like deviating from the defaults.Learn more about...
What was this developer thinking??
26 Jul 2022
Contributed by Lukas
Maybe you've inherited a project and just looking at how the code is organized makes your head hurt. Before you go ripping it apart and "making it bet...
Should you fix all bugs in a legacy project?
12 Jul 2022
Contributed by Lukas
You've inherited a legacy app. It's "running fine" in production, but when you add an error reporting tool, you see hundreds of errors, warnings, and ...